Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Jens_Argentzell
Employee
Employee

Quick tips #8 - Server settings for best performance

This page describes the settings for best performance for servers running the Qlik Associative Engine.
Latest update: May 2022

Windows 2022 has improved performance for servers with many physical cores. This table shows the definition used in the below document.

 

Older Windows versions

Windows 2022

Server with normal core count

≤64 physical cores

≤90 physical cores

Server with large core count

>64 physical cores

>90 physical cores

 

BIOS settings

SettingValue
Hyper-threading

Applies to QlikView and Qlik Sense servers:

  • Server with normal core count: Enabled
  • Server with large core count: Disabled

There are use cases that even on servers with huge #cores enabling hyper-threading is beneficial. Therefore, it is best to test these settings for your application.

Power Management (System Profile Settings)

Applies to QlikView and Qlik Sense servers:

  • Custom with Max performance and C states enabled

Another setting that can be used is the full performance setting. But this settings makes the server run constantly at the maximum clock speed for all cores, which has the following drawbacks:

  • The server uses more power.
  • The CPUs do not use clock speeds higher than the speed of the all-core boost clock, which usually is lower than the maximum boost clock speed of the CPUs.

A solution to this is to use a custom system profile in the server BIOS that allows the CPUs to use their C states while all other components are set to full performance. The custom system profile should be set up similar to the following:

  • CPU power management: Max performance
  • Turbo boost: Enabled
  • Energy efficient turbo: Disabled
  • C states: Autonomous (if available, otherwise Enabled)
  • C1E state: Enabled
  • Uncore frequency: Max
  • Memory frequency: Max
  • Energy efficiency policy: Performance
  • Determinism slider: Power determinism
NUMA

QlikView servers (Intel):

  • Disabled*

Qlik Sense servers (Intel):

  • Server with normal core count: Disabled*
  • Server with large core count: Enabled

*On servers with Intel CPUs, NUMA is disabled by enabling Node Interleaving.

QlikView  and Qlik Sense servers (AMD EPYC):

  • NUMA mode should be set to Automatic and 1 node per socket. (L3 Cache NUMA Nodes disabled.)
Memory configuration

QlikView and Qlik Sense servers:

  • Configured for best performance (the DIMM slots for every CPU should be populated in accordance to the server manufacturer's specification for best performance)
Hardware/Software Prefetcher

QlikView and Qlik Sense servers:

  • Enabled

 

The names of the settings and how to tune them may differ depending on the server manufacturer and model. Refer to the documentation for your server to find the equivalents of the settings listed above.

Operating system settings

Microsoft Windows

SettingValue
Power plan

QlikView and Qlik Sense servers:

  • High Performance
Registry update

Qlik Sense servers only:

For servers with a large core count, there is a registry change, applicable to both Intel and AMD CPUs, that improves the responsiveness when the Qlik Sense Repository Service (QRS) is under heavy load (for example, when many users open the hub at the same time).

Two registry updates are needed:

Add the Thread_NormalizeSpinWait key as a DWORD value to the following subkey: HKEY\LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework

  • Value name: Thread_NormalizeSpinWait
  • Value data: 1

Add the Switch.System.Threading.UseNetCoreTimer key as a String value to the following subkey: HKEY\LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AppContext

  • Value name: Switch.System.Threading.UseNetCoreTimer
  • Value data: true

The fix is described in full here: https://support.microsoft.com/en-za/help/4527212/long-spin-wait-loops-in-net-framework-on-intel-skyl...

 

/ Cheers from the Scalability Center team

Labels (1)
31 Replies
AlexOmetis
Partner Ambassador
Partner Ambassador

A couple of questions on this... 
  1. In a virtual environment does this mean the host has <64 physical cores or the Qlik Sense VM is using <64 cores? I assume the former. 
  2. In QlikView it could only reliably detect NUMA up to 8 cores, but there was a way to force it to use NUMA round robin in the settings.ini (see here) which helped performance. I can't see any evidence that this is supported in Qlik Sense - is it supported or is there an equivalent?

The scenario we have is a virtual host where NUMA is enabled and we can't alter that. The VM has 16 cores, so well under the 64 limit - although the host itself has many more. We want to know if there's a way to get Qlik Sense to handle NUMA enablement better from a performance point of view. 

Qlik Partner Ambassador 2024
Frederic_De_Ranter

First to clarify: we have not tested these settings on VMs since the VM layer adds another level of complexity. But I think we can read the amount of cores as the ones that Qlik has available for itself in the system. 

I have no knowledge about QlikView only detecting NUMA up to 8 cores: I've tested QlikView with many more cores and didn't have issues with automatic detection of NUMA. (again: tested on physical machines, a VM layer can change this)

But now to the important part of the question: Qlik Sense does accept the same setting for EnableNumaRoundRobin as QlikView. To be able to see it in the logging you need to enable a higher verbosity of the log. 

In the settings.ini file (ProgramData\Qlik\Sense\Engine) you can add 
Verbosity=501
After restarting of the Engine service, you'll be able to see in the System_Engine log (found in ProgramData\Qlik\Sense\Log\Engine\Trace) if  NUMA was detected by the engine (NUMA DETECTED).  Or if NUMA was not detected: Engine configured to ignore NUMA nodes (IF NUMA IS ENABLED).

In that case, you can add in settings.ini the same settings as with QlikView: 

EnableNumaRoundRobin=1

After restarting the Engine service, in the same System_Engine log, you should be able to see: 
NUMA nodes enabled

If you're happy with the result you can take away the extra verbosity (delete the line in settings.ini).