How to Stop Multi-User request been queued and force it to use the Multi-Core CPU available??
Here is what we have: -
2 users, selecting the same selection at the same time thru the web browser on a qvw document, it is expected that the qvw will respond within 2min.
Hardware, using 4x8 (32) Core CPU, 256MB RAM, using v11.0 SR2
Note: ALL recommended hardware BIOS setting/tweaks has been performed and setup
2 CPU will peak, each performing a ‘single-threaded’ calculation for each user
Both user should receive their respond within 2 min, at the same time.
1 CPU will peak, performing a ‘single-threaded’ calculation a user
Then the other user request will be queue and performed once the 1st request completes
User 1 will get the result within 2min, User 2 will get the result with 4 min.
Note: We accept the 'single-thread' calculation, BUT the Multi-User request being queued does not make sense, it should use all available CPU and then only queue, when there is NO available CPU to process.
Re: How to Stop Multi-User request been queued and force it to use the Multi-Core CPU available??
Here is what we have identified as the root cause and we (our team) are in the midst of conducting more test to see what else we can do to fine tune...
We have a qvw that is 700MB for financial reporting with 6 years of data on v11.0SR2.
Within this qvw, we have a tab with a P&L pivot table, and user can select the period they want to show, when user select a column, we noticed only 1 x CPU (32 cpu in total with 256GB RAM) was actually moving... and when we have 5 users, all the users request were queued... if the response took 30 seconds to complete, the user A would be 30 seconds, User B would then be 25-30 seconds later and continue...
We did all the standard Qliktech's text book recommendation and tweaking, including NUMA and etc... the NUMA setting helped improve by 1seconds on a 50-60 seconds response time calculation and so it was more trial and error, but no big improvement...
So we went back to the beginning and started conducting simple test...
If we changed the pivot table expression to a simple SUM(), all the CPU were used... so we start breaking down the expression, one bit at a time.
We then found that within the original expression, we had a data island field called 'unit' which allows us to show the amount in "full, thousand, and million' this is a field that is selectable by the user and based on the selection, the expression would then divide on it, for example Total Amount 82,928,000 and in million, the 'unit' value is 1,000,000, a simple divide.
We found that when trying to divide on this, it was causing (seems to be in task manager) the CPU to go into a single-thread mode.
Instead, what we did was to change the expression to use a "variable" which incorporated the expression to pickup the selected data island field.
Once this was changed, the whole expression became "multi-thread" and we could see all the CPU going crazy... And all the Users request were completed almost together... the major cpu issue was resolved.
We've had people telling us not to use data island, but no-one can tell us why?, I guess we know where not to use data island now.
What a learning exercise, drove a few of our us nuts for a while, a big sign of relief... !
Now, we are in the midst of doing other test to see what perform well with what... e.g. which browser works well with which QV release, when to use Set Analysis vs. If, which functions works best and when... lots to understand and learn...