I'm looking for some advice re Qlik Sense RAM / Page File usage.
We have a server with 16GB RAM, on this server, we've got an app that takes between 2-4 mintues to open, then is very sluggish in use while slicing and dicing.
Upon investigation, the page file usage was at 34GB, and in Task Manager, the Qlik engine service (engine.exe) had a Memory usage of 6GM but a Commit Size of 30GB.
I rebooted the server, and obviously the Page file was truncated, however, when launching Qlik Sense, and opening the App in question, RAM usage went straight back up to 6GB and the Commit Size 6GB too.
Simplistically, the server needs more RAM, to stop it from paging. However, how can I explain that to the customer? They are curious to why Qlik is only using 6GB of "RAM" but 30GB of "Swap"
There may be an underlying issue with the App, which we need to resolve, however, I think increasing the RAM would be a good first step, to give us some head space while debugging and potentially deploying a new version of the App.
I was going to raise a support incident, but thought I'd reach out to the community first.
Hey Carl, It's a bit hard to diagnose in the abstract, but from first principles:
- Qlik is an in memory solution
- When speaking of apps in memory, there are three types of cache:
(1) the base uncompressed footprint of an app
(2) the session cache for the user session
(3) cached result sets
* also flex space used by the Engine during the calculation of the hypercubes needed for visualization objects
(1) can be tested by restarting the Engine and opening an app
(2) is trivial
(3) will build up over time as users drill down into an app. For example in a sales app, if a user drills down into the sum([Sales]) for Q2 of 2016, then the resulting calculation which was done by the CPU(s) on the server will be cached in RAM for quick recovery by subsequent users.
- Apps will stay in memory as defined by the App cache time (QMC > Engines > Edit > Apps > App cache time (seconds)).
- So while it's possible that a single app takes 6GB of RAM to expand in memory, it is highly unlikely that the single app was in memory at the time when the Engine process went to swap.
- The Engine > Trace > System_Engine logs from the time of the event will speak to the sequence. I would expect to see a fair number of Virtual Memory warnings about the Engine breaching the Working set (QMC > Engines > Edit > Advanced).