http://supportapj.dell.com/support/edocs/network/IntelPRO/R231521/CS/e1000e.htm
Intel 1000 网卡进阶使用Linux版
Intel(R) Network Connection Intel 1000 网卡进阶使用Linux版来源:Linux 2.6 E1000_main.c Intel 1000 drive Intel 官方网站 整理:starshift Intel 1000 网卡高级功能InterruptThrottleRate该参数用来控制网卡每秒钟能够产生的最大中断数目。参数的有效值为:0,1,3,100-100000 (0=off, 1=dynamic, 3=dynamic conservative) 默认值: 3 。增大中断的意义是显而易见的,降低CPU的使用率。但是同时也增加了数据包处理的延迟,这里的延迟主要指的是在缓冲区的排队延迟。 从7.3.x版本开始,驱动程序能够根据网络中的流量自适应地确定InterruptThrottleRate参数的值,这是网卡的参数应该设置为1或者3。在驱动程序中,实现根据网络流量动态确定InterruptThrottleRate值的算法是十分重要的。 算法周期性地接收到的数据包被分为三类:bulk traffic,low latency,lowest latency。其中:bulk traffic对应大部分数据包都是正常大小,或者说较大的数据包的情形。low latency对应存在很多较小数据包的情形,lowest latency对应大部分数据包都是小包的情形。 在dynamic conservative模式下,InterruptThrottleRate 在bulk traffic 下的值为4000,在low latency 和lowest latency 下按照每级20000的方式进行增长。这种模式适用于大部分的应用。 将本参数设置为0将关闭所有的中断动态调整,(可能也关闭了所有的中断)这时的工作状态适合大部分都是小包的情况,而不适合全部都是大包的情况。 注意: 1)InterruptThrottleRate 要比其它的参数如:TxAbsIntDelay和RxAbsIntDelay优先级高。也就是说,限制了转发和接受的绝对延迟也不能够超越之前的InterruptThrottleRate,也就是说不能够产生比InterruptThrottleRate更多的中断。 2) 当采用默认配置和有多个适配器同时工作时,CPU利用率可能呈非线性增长。为了限制CPU的利用率,同时不影响吞吐量,可以按照下述方式设置网卡驱动: modprobe e1000e InterruptThrottleRate=3000,3000,3000 这里将第一个,第二个和第三个网卡的InterruptThrottleRate参数设为3000.对于大多数的系统来说,2000-3000通常是比较合适的值,但是最优值是和平台相关的。如果不在乎CPU利用率,可以使用RX_POLLING (NAPI)或者默认值。 RxIntDelayValid Range: 0-65535 (0=off) Default Value: 0 以1.024微秒为单位延迟数据包所产生的中断。对于特定的网络流量而言,适当的设置该参数可以提高CPU的效率。增加这个值可以人为地增加数据帧到达的间隔,同时递减网卡的吞吐量。 注意:如果该参数设置成为非0 ,在某种情况下网卡可能会挂起。如果设置了NETDEV WATCHDOG的话,网卡可以自动reset。 RxAbsIntDelayValid Range: 0-65535 (0=off) Default Value: 8 以1.024微秒为单位延迟数据包所产生的中断。仅当RxIntDelay为非0的时候有效。设置一帧在另外一帧接受后所需要的绝对延迟。 TxIntDelayValid Range: 0-65535 (0=off) Default Value: 8 TxAbsIntDelayValid Range: 0-65535 (0=off) Default Value: 32 发送时的中断延迟,同上两个。 CopybreakValid Range: 0-xxxxxxx (0=off) Default Value: 256 Usage: insmod e1000e.ko copybreak=128 驱动程序会将小于或等于该值的数据包拷贝至一个fresh(新的?)接收缓冲区,之后再交给协议栈。 这个参数与其他的参数不同,多个适配器的时候也只设置一次((not 1,1,1 etc.))。参数对系统上所有的网卡都有效。同时在运行时也可以通过下面位置进行更改。 /sys/module/e1000e/parameters/copybreak SmartPowerDownEnableValid Range: 0-1 Default Value: 0 (disabled) 允许在低电量的时候关闭物理层。 KumeranLockLossValid Range: 0-1 Default Value: 1 (enabled) 是否省略重启。 其他设置使用不同的配置alias eth0 e1000e alias eth1 e1000e options e1000e Speed=10,100 Duplex=2,1 将eth0 配成10的全双工,eth1配成100的半双工。 链路信息dmesg -n 8 注意:该配置重启后无效 Jumbo 帧Jumbo 帧支持使用MTU使用比1500更大的帧大小,设置Jumbo帧的命令如下: ifconfig eth mtu 9000 up 该配置重启后失效,长期配置请修改文件 /etc/sysconfig/network-scripts/ifcfg-eth (RedHat Linux ,其他版本可能位置不同)。 注意: 1) 支持最大的Jumbo MTU设置为:9216 2) 使用Jumbo可能会降低性能。 Reference: [1] Linux* Base Driver for Intel(R) Network Connection [2] Interrupt Moderation Using Intel® GbE Controllers |