In NSX Advanced Load Balancer, two knobs are introduced to control the use of hyper-threaded cores and the distribution (placement) of se_dps on the hyper-threaded CPUs.

These two knobs are part of the Service Engine group.

The following are the two knobs -

You can enable hyper-threading on the SE using:

use_hyperthreaded_cores –
True [default] | False 
    
enable or disable se_dps to use hyper-threaded cores 

You can control the placement of se_dps on the hyper-threaded CPUs using:

se_hyperthreaded_mode – 
     SE_CPU_HT_AUTO[default]
     SE_CPU_HT_SPARSE_DISPATCHER_PRIORITY
     SE_CPU_HT_SPARSE_PROXY_PRIORITY
     SE_CPU_HT_PACKED_CORES 
         
     controls the distribution of se_dps on hyper-threads
Note:

The processor needs to support hyper-threading and use of hyper-threading should be enabled at BIOS to utilize these knobs.

use_hyperthreaded_cores — You can use this knob to enable or disable the use of hyper-threaded cores for se_dps. This knob can be configured using both CLI and the NSX Advanced Load Balancer UI.

The following are the CLI commands:

[admin:vpr-ctrl]: serviceenginegroup> use_hyperthreaded_cores
[admin:vpr-ctrl]: serviceenginegroup> se_hyperthreaded_mode SE_CPU_HT_AUTO
[admin:vpr-ctrl]: serviceenginegroup> save 

se_hyperthreaded_mode — You can use this knob to influence the distribution of se_dp on the hyper-threaded CPUs when the number of datapath processes is less than the number of hyper-threaded CPUs online. The knob can be configured only using the CLI.

Note:

You should set use_hyperthreaded_cores to True for the mode configured using se_hyperthreaded_mode to take effect.

The following are the supported values for se_hyperthreaded_mode:

SE_CPU_HT_AUTO

This is the default mode. The SE automatically determines the best placement. This mode preserves the existing behavior in accordance with CPU hyper-threading topology. If the number of data path processes is less than the number of CPUs, this is equivalent to SE_CPU_HT_SPARSE_PROXY_PRIORITY mode.

SE_CPU_HT_SPARSE_DISPATCHER_PRIORITY

This mode prioritizes the dispatcher instances by attempting to place only one data-path process in the physical CPU. This mode exhausts the physical cores first and then hyper-threads in numerically descending order of CPU number.



SE_CPU_HT_SPARSE_PROXY_PRIORITY

This mode prioritizes the proxy (non-dispatcher) instances by attempting to place only one data-path process in the physical CPU. This is useful when the number of data path processes is less than the number of CPUs. This mode exhausts the physical cores and then hyper-threads in numerically ascending order of CPU number.



SE_CPU_HT_PACKED_CORES

This mode places the data path processes on the same physical core. Each core can have two dispatchers or two non-dispatcher (proxy) instances being adjacent to each other. This mode is useful when the number of data path processes is less than the number of CPUs. This mode exhausts the hyper-threads serially on each core before moving on to the next physical core.