Intel 1000 网卡进阶使用Linux版

来源:互联网 发布:以前qq网络硬盘 编辑:程序博客网 时间:2024/06/05 20:40

http://supportapj.dell.com/support/edocs/network/IntelPRO/R231521/CS/e1000e.htm


Intel 1000 网卡进阶使用Linux版

时间:2010-02-23 12:18来源:Intel 官方网站 作者:starshift 点击:485次
InterruptThrottleRate参数用来控制网卡每秒钟能够产生的最大中断数目。参数的有效值为:0,1,3,100-100000 (0=off, 1=dynamic, 3=dynamic conservative) 默认值: 3
TAG: 网卡驱动网卡参数

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)或者默认值。

RxIntDelay

Valid Range: 0-65535 (0=off)

Default Value: 0

以1.024微秒为单位延迟数据包所产生的中断。对于特定的网络流量而言,适当的设置该参数可以提高CPU的效率。增加这个值可以人为地增加数据帧到达的间隔,同时递减网卡的吞吐量。

注意:如果该参数设置成为非0 ,在某种情况下网卡可能会挂起。如果设置了NETDEV WATCHDOG的话,网卡可以自动reset。

RxAbsIntDelay

Valid Range: 0-65535 (0=off)

Default Value: 8

以1.024微秒为单位延迟数据包所产生的中断。仅当RxIntDelay为非0的时候有效。设置一帧在另外一帧接受后所需要的绝对延迟。

TxIntDelay

Valid Range: 0-65535 (0=off)

Default Value: 8

TxAbsIntDelay

Valid Range: 0-65535 (0=off)

Default Value: 32

发送时的中断延迟,同上两个。

Copybreak

Valid 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

SmartPowerDownEnable

Valid Range: 0-1

Default Value: 0 (disabled)

允许在低电量的时候关闭物理层。

KumeranLockLoss

Valid 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


原创粉丝点击