Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Jan 26, 2024 3:37:45 AM
Jan 12, 2012 7:17:58 AM
NUMA, Non-Uniform Memory Access, is a computer memory design used in Multiprocessing, where the memory access time depends on the memory location relative to a processor. Under NUMA, a processor can access its own local memory faster than non-local memory, that is, memory local to another processor or memory shared between processors.
QlikView generally performs better with NUMA disabled. The NUMA setting is controlled by the computer BIOS, and the recommendation is to disable it for best possible performance.
Some hardware does not allow disabling NUMA. For these scenarios QlikView 11.20 SR2 and later can automatically detect the presence of NUMA and if present adjust the QVS.exe to adapt to a NUMA environment. While not as efficient as disabling NUMA in BIOS, it restores some of the performance lost when NUMA is enabled.
The automatic detection only works in 2 or 4-socket systems. For 8 socket machines, the NUMA detection fails, leaving the QVS.exe to believe itself to exist in a non-NUMA environment.
The software NUMA adaption is controlled with the EnableNumaRoundRobin variable in the QlikView Server settings.ini file.
All recommendations can be found on the community: Quick tips #8 - Server settings for best performance they are being updated if Performance & Scalability team sees that changes in server configurations impact the performance. So it worth checking them from time to time.
Please keep in mind that the Performance & Scalability team tries to test many hardware configurations, but it is still a very small subset of possible server configurations seen in customer deployments. Due to this, in case of doubt, they suggest testing the impact of the setting. For example, one customer might on average see that for their deployment disabling NUMA in BIOS is beneficial, while others might not notice any difference.
All changes should be modified with caution, because set NUMA (in hardware and software) improperly might result in (significant) performance degrade, or fatal memory issue in some rare case.
EnableNumaRoundRobin is a setting configurable in the settings.ini file.
0 (default): Automated state where QlikView Server at startup detects whether NUMA is enabled or disabled at certain hardware and adapts to it. If NUMA is enabled QlikView Server will ignore NUMA nodes when allocating memory.
1: QlikView Server is acting as if NUMA is enabled from BIOS (without any attempts to detect it)
2: QlikView Server will not ignore NUMA nodes if present (i.e. NUMA enabled)
Modify the settings.ini and add EnableNumaRoundRobin=X, where X is your desired value. The settings.ini file is (by default) stored in %ProgramData%\QlikTech\ on your QlikView server node.
For information on how to change the settings.ini, see How to Modify the QlikView Server Settings.ini file.
A similar method can be used in the QlikView Desktop client. The settings used are slightly different.
EnableNumaRoundRobin (integer type parameter) for QlikView Desktop:
0 (default value): detect NUMA automatically and enable it in QlikView if possible
1: force QlikView Desktop to enable NUMA
Other: force QlikView Desktop to disable NUMA
For details of instruction and different testing result please refer to attached pdf file.
There appears to be a discrepancy in the parameter descriptions between the upper and lower sections.
which one is correct.
<Upper row: It says to ignore NUMA>
EnableNumaRoundRobin
0 (default): Automated state where QlikView Server at startup detects whether NUMA is enabled or disabled at certain hardware and adapts to it. If NUMA is enabled QlikView Server will ignore NUMA nodes when allocating memory.
1: QlikView Server is acting as if NUMA is enabled from BIOS (without any attempts to detect it)
2: QlikView Server will not ignore NUMA nodes if present (i.e. NUMA enabled)
<Bottom: It says to enable NUMA>
EnableNumaRoundRobin (integer type parameter):
- 0 (default value): detect NUMA automatically and enable it in QV if possible
- 1: force QV to enable NUMA
- Other: force QV to disable NUMA
Hello @sis
I corrected the article. From what I understand, any other value that is not 1 or 0 would have had the exact same effect as if it was 2. But as this is confusing, I have amended the description.
All the best,
Sonja
Thank you for answering.
My understanding is that to disable NUMA in Qlik View, you just need to set this parameter to 2.
Please point out if my understanding is wrong.
Hello @sis
To clarify, I have modified the article some more. NUMA is configured on your hardware (BIOS), rather than in QlikView. For QlikView Server you will want to use 0, which does this:
Automated state where QlikView Server at startup detects whether NUMA is enabled or disabled at certain hardware and adapts to it. If NUMA is enabled QlikView Server will ignore NUMA nodes when allocating memory.
The QlikView Desktop client operates differently. I have changed this back to Other now, as I realize it caused more confusion having it at a matching two.
All the best,
Sonja