Igb 驱动程序的 InterruptThrottleRate 参数可调节适配器产生中断时的限制率,该参数会影响网络和系统性能。Igb 驱动程序使用动态保守模式(设置 3)作为根据传入流量动态调整 InterruptThrottleRate 的默认值。InterruptThrottleRate 的有效范围如下:
- 0 代表关闭
- 1 代表动态
- 3 代表动态保守(默认)
- 100-100000 表示对适配器编程以发送大量每秒中断数中的最大值(即使有更多包到达)
当默认动态保守模式导致性能下降时,考虑将 InterruptThrottleRate 设置为动态或静态值。在大多数环境中,将 InterruptThrottleRate 设置为动态值应增加中断率,并会提高性能。但是,在某些环境中,即使采用动态模式也不能使中断裁决率达到最优,在这些环境中,将 InterruptThrottleRate 设置为一个静态值可能更合适,可以产生更好的性能。
要将 InterruptThrottleRate 设置为动态值,请在 ESXi 主机上运行以下命令:
vmkload_mod driver_name InterruptThrottleRate=value,value
例如:
vmkload_mod igb InterruptThrottleRate=8000,
8000
注意:值为 1 即将限制率设置为动态值。每个值都代表一个端口。例如,上述命令用于两个端口。视可用端口数量而定,可以添加更多的值(用逗号分隔)。对于四端口适配器,命令为:
vmkload_mod igb InterruptThrottleRate=
8000
,
8000
,
8000
,
8000
或者,使用 esxcfg-module 在整个 ESXi 重新引导过程中保留此参数。例如,为使用一个双端口适配器和一个单端口适配器的 ESXi 主机设置参数。
# esxcfg-module -s "InterruptThrottleRate=
8000
,
8000
,
8000
" igb
验证命令 ethtool -c vmnicX 的输出。
注意:确保 rx-usecs 设置为 125,表示中断最近发生了更改。
注意:将 InterruptThrottleRate 设置为静态值将对适配器编程以发送大量每秒中断数中的最大值(即使有更多包到达)。将该值设置为低于 3000 的值会减少系统上的负载,并会降低 CPU 利用率,但由于不能快速处理包,会增加延迟并降低吞吐量。对于大多数流量类型,InterruptThrottleRate 的值为 8000 时,可以获得良好的性能,但对小型包的性能和延迟则不足。对于包含小型包并且需要极低延迟的网络流量,考虑使用更大的 InterruptThrottleRate 值。