Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
May 22, 2024 10:20:28 AM
Nov 8, 2018 5:09:30 AM
QlikView and Qlik Sense files are like ZIP file, as in they are highly compressed. So obtaining an estimate of how much RAM is needed for loading Apps into memory (footprint) is difficult to provide across the board. The expected memory usage associated with the app can also depend on how many users access the app and how much they are used.
An estimate of the RAM needed per app can be built on the below, but for accuracy always test by loading the app into memory and using the Qlik Scalability Tools to obtain a baseline of memory usage for each app as it is accessed by the foreseeable number of users.
Telemetry logging which allows for using the Telemetry Dashboard, is also an available suitable tool.
Since the release of the February 2019 version, Sense System Performance Analyzer monitoring App can be used to determine app footprint as well. Since the release of the June 2018 version, App Metadata Analyzer monitoring App can also be used. However, these last three may not provide the same data as the Scalability Tools.
An alternative is to use a test environment and simply observe RAM usage increases as apps are first opened (footprint), and as number of users accessing the app increase, then as number of operations are performed within the app. The test environment results for observed memory and CPU usage can be recorded as a baseline for the particular app in production, which assists in determining future sizing/scaling needs.
Need direct assistance in evaluating your Qlik Sense and QlikView apps? Qlik's Professional Services are available to assist you.
RAMInitial = SizeOnDisk × FileSizeMultiplier ; this is the initial RAM footprint for any application
FileSizeMultiplier: range between 2-10 (this is a compression* ratio depending on the data contained in the app)
*Compression is based upon the data, and how much we can compress depends upon the homogeneity of the data. The more homogeneous, the more compression Qlik can achieve.
More information on one way of optimizing a document can be found on the Qlik Design Blog: Symbol Tables and Bit-Stuffed Pointers
RAMperUser = RAMinitial × userRAMratio ; this is the RAM per each incremental user
userRAMratio: range between 1% -10%
Total RAM used per app :
TotalRAM = (RAMperUser × Number of users) + RAMinitial
Example:
SizeOnDisk = 1 GB
File Size Multiplier 6 (range is from 2 to 10) This is an example value. A value can be obtained by reviewing telemetry (how far does the app expand?) or opening the app in a QlikView or Qlik Sense desktop and measuring the expansion based on how large it grows in memory.
RAMinitial = 1 * 6 = 6 GB
If we take a RAM Ratio per User of 6% then it is 0.06 (range is from 1 to 10)
RAMperUser = 6 x 0.06 = 0.36GB
Then RAM Required for 30 Users
TotalRAM = (RAMperUser × No. users) + RAMinitial
TotalRAM = (0.36 * 30) + 6
TotalRAM = 16.8 GB
Hi Sonja,
How did you got 6 when you are calculating RAMInitial for given example?
You have considered 1 GB size on disk.
then RAMinitial = 1 * 6 = 6 GB, it can be 2 to 10, so how are you putting 6.
Also, in App Metadata Analyzer we saw there are two columns "App RAM Footprint" and "Peak Memory". Is this Peak memory saying ram required during reload of this app?
so, is it safe to say if on one node where no reload service is enabled. we should look at APP RAM Footprint and the node where Reload is happening their Peak Memory is to be considered?
Thanks.
Hello @Zengaburu
The 6 in our example was just that, an example (I have clarified this in the article). To obtain this value, you would be looking at "how much does the app expand in memory vs its size on disk?", which can be reviewed using telemetry, or by simply opening the app in a desktop client. So, for QlikView: simply open it with the desktop; for Qlik Sense: export it and then open it with a Sense Desktop.
On your second question: an app will still require additional RAM when it is being reloaded, vs when it simply sits in memory. This question relies on whether or not the peak memory you are seeing there includes user traffic, which would not match what you need on a reload node.
I highly recommend taking follow-up questions over to our App Development forum (assuming you are using Qlik Sense) or reviewing the Scalability forum for additional assistance. For hands on help, our Professional Services are ready to step up.
All the best,
Sonja
@Chip_Matejowsky @Sonja_Bauernfeind
this is screenshot that I took from Qix-Engine-Memory-Management.pdf.
The highlighted one is RAMinitial??
Whether RAMperUser includes cached result sets??or for Cached result sets whether we need to provision additional RAM.
TotalRAM = (RAMperUser × Number of users) + RAMinitial --> In this Number of users is concurrent users for particular app??