Performance Registry Keys
This group of registry keys configures parameters that can improve adapter performance.
Value Name |
Default Value |
Description |
RecvCompletionMethod |
eth:1 IPoIB:1 |
Sets the completion methods of the receive packets, and it affects network throughput and CPU utilization. The supported methods are:
The valid values are:
|
*InterruptModeration |
eth:1 IPoIB:1 |
Sets the rate at which the controller moderates or delays the generation of interrupts, making it possible to optimize network throughput and CPU utilization. When disabled, the interrupt moderation of the system generates an interrupt when the packet is received. In this mode, the CPU utilization is increased at higher data rates, because the system must handle a larger number of interrupts. However, the latency is decreased, since that packet is processed more quickly. When interrupt moderation is enabled, the system accumulates interrupts and sends a single interrupt rather than a series of interrupts. An interrupt is generated after receiving 5 packets or after the passing of 10 micro seconds from receiving the first packet. The valid values are:
|
RxIntModeration |
eth:2 IPoIB:2 |
Sets the rate at which the controller moderates or delays the generation of interrupts, making it possible to optimize network throughput and CPU utilization. The default setting (Adaptive) adjusts the interrupt rates dynamically, depending on traffic type and network usage. Choosing a different setting may improve network and system performance in certain configurations. The valid values are:
The interrupt moderation count and time are configured dynamically, based on traffic types and rate. |
pkt_rate_low |
eth:150000 IPoIB:150000 |
Sets the packet rate below which the traffic is considered as latency traffic when using adaptive interrupt moderation. The valid values are 100 up to 1000000. Note: This registry value is not exposed via the UI. |
pkt_rate_high |
eth:170000 IPoIB:170000 |
Sets the packet rate above which the traffic is considered as bandwidth traffic. when using adaptive interrupt moderation. The valid values are 100 up to 1000000. Note: This registry value is not exposed via the UI. |
*RSS |
eth:1 IPoIB:1 |
Sets the driver to use Receive Side Scaling (RSS) mode to improve the performance of handling incoming packets. This mode allows the adapter port to utilize the multiple CPUs in a multi-core system for receiving incoming packets and steering them to their destination. RSS can significantly improve the number of transactions per second, the number of connections per second, and the network throughput. This parameter can be set to one of two values:
The hardware is configured once to use the Toeplitz hash function and the indirection table is never changed. Note: The I/O Acceleration Technology (IOAT) is not functional in this mode. |
TxHashDisrtibution |
3 |
Sets the algorithm which is used to distribute the send-packets on different send rings. The adapter uses 3 methods:
The valid values are:
Note: This registry value is not exposed via the UI. |
RxSmallPacketBypass |
eth:0 IPoIB:0 |
Specifies whether received small packets bypass larger packets when indicating received packet to NDIS. This mode is useful in bi-directional applications. Enabling this mode ensures that the ACK packet will bypass the regular packet and TCP/IP stack will issue the next packet more quickly. The valid values are:
Note: This registry value is not exposed via the UI. |
ReturnPacketThreshold |
eth:341 IPoIB:341 |
The allowed number of free received packets on the rings. Any number above it will cause the driver to return the packet to the hardware immediately. When the value is set to 0, the adapter uses 2/3 of the received ring size. The valid values are: 0 to 4096. Note: This registry value is not exposed via the UI. |
NumTcb |
eth:16 IPoIB:16 |
The number of send buffers that the driver allocates for sending purposes. Each buffer is in LSO size, if LSO is enabled, or in MTU size, otherwise. The valid values are 1 up to 64. Note: This registry value is not exposed via the UI. |
ThreadPoll |
eth:10000 IPoIB:10000 |
The number of cycles that should be passed without receiving any packet before the polling mechanism stops when using polling completion method for receiving. Afterwards, receiving new packets will generate an interrupt that reschedules the polling mechanism. The valid values are 0 up to 200000. Note: This registry value is not exposed via the UI. |
AverageFactor |
eth:16 IPoIB:16 |
The weight of the last polling in the decision whether to continue the polling or give up when using polling completion method for receiving. The valid values are 0 up to 256. Note: This registry value is not exposed via the UI. |
AveragePollThreshold |
eth:10 IPoIB:10 |
The average threshold polling number when using polling completion method for receiving. If the average number is higher than this value, the adapter continues to poll. The valid values are 0 up to 1000. Note: This registry value is not exposed via the UI. |
ThisPollThreshold |
eth:100 IPoIB:100 |
The threshold number of the last polling cycle when using polling completion method for receiving. If the number of packets received in the last polling cycle is higher than this value, the adapter continues to poll The valid values are 0 up to 1000. Note: This registry value is not exposed via the UI. |
*HeaderDataSplit |
eth:0 IPoIB:0 |
Enables the driver to use header data split. In this mode, the adapter uses two buffers to receive the packet. The first buffer holds the header, while the second buffer holds the data. This method reduces the cache hits and improves the performance. The valid values are:
Note: This registry value is not exposed via the UI. |
VlanId |
eth:0 IPoIB:0 |
Enables packets with VlanId. It is used when no team intermediate driver is used. The valid values are:
No Vlan Id is passed.
Valid Vlan Id that will be passed. Note: This register cannot be configured via a VF that is running over Microsoft Hyper-V. |
TxForwardingProcessor |
Automatically selected based on RSS configuration |
The processor that will be used to forward the packets sent by the forwarding thread. Default is based on number of rings and number of cores on the machine. Note: This registry value is not exposed via the UI. |
DefaultRecvRingProcessor |
Automatically selected based on RSS configuration |
The type of processor which will be used for the default Receive ring. This variable handles packets that are not han-dled by RSS. This can be non TCP/UDP packets or even UDP packets, if they are configured to use the default ring. Note: This registry value is not exposed via the UI. |
TxInterruptProcessor |
Automatically selected based on RSS configuration |
The type of processor which will be used to handle the TX completions. The default is based on a number of rings and a number of cores on the machine. Note: This registry value is not exposed via the UI. |
*NumRSSQueues |
eth:8 IPoIB:8 |
The maximum number of the RSS queues that the device should use. Note: The maximum value of this registry key is 64. Note: This registry key is only in Windows Server 2012 and above. |
BlueFlame |
eth:1 IPoIB:1 |
The latency-critical Send WQEs to the device. When a BlueFlame is used, the WQEs are written directly to the PCI BAR of the device (in addition to memory), so that the device may handle them without having to access memory, thus shortening the execution latency. For best performance, it is recommended to use the BlueFlame when the HCA is lightly loaded. For high-bandwidth scenarios, it is recommended to use regular posting (without BlueFlame). The valid values are:
Note: This registry value is not exposed via the UI. |
*MaxRSSProcessors |
eth:8 IPoIB:8 |
The maximum number of RSS processors. Note: This registry key is only in Windows Server 2012 and above. |