NVIDIA® WinOF VPI Documentation v5.50.54000
Linux Kernel Upstream Release Notes v6.5

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:

  • Polling - increases the CPU utilization, because the system polls the received rings for incoming packets; however, it may increase the network bandwidth since the incoming packet is handled faster.

  • Adaptive - combines the interrupt and polling methods dynamically, depending on traffic type and network usage.

The valid values are:

  • 0: polling

  • 1: adaptive

*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:

  • 0: disable

  • 1: enable

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:

  • 1: static

  • 2: adaptive

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:

  • 1: enable (default). Sets RSS Mode.

  • 0: disable

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:

  • 1: Size

    In this method only 2 Tx rings are used. The send-packets are distributed, based on the packet size. Packets that are smaller than 128 bytes use one ring, while the larger packets use the other ring.

  • 2: Hash

    In this method the adapter calculates a hash value based on the destination IP, the TCP source and the destination port. If the packet type is not IP, the packet uses ring number 0.

  • 3: Hash and size

    In this method for each hash value, 2 rings are used: one for small packets and another one for larger packets.

The valid values are:

  • 1: size

  • 2: hash

  • 3: hash and size

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:

  • 0: disable

  • 1: enable

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:

  • 0: disable

  • 1: enable

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:

  • 0: disable

No Vlan Id is passed.

  • 1-4095

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:

  • 0: disable

  • 1: enable

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.

© Copyright 2023, NVIDIA. Last updated on Oct 26, 2023.