用于 Intel(R) 以太网网络连接的 Linux 基础驱动程序

Intel 千兆 Linux 驱动程序。版权所有(c) 1999 - 2013 Intel Corporation。

目录

  • 识别您的适配器

  • 命令行参数

  • 速度和双工配置

  • 其他配置

  • 支持

识别您的适配器

有关如何识别您的适配器的更多信息,请访问以下网址的适配器和驱动程序 ID 指南:

有关最新的 Intel Linux 网络驱动程序,请参阅以下网站。在搜索字段中,输入您的适配器名称或类型,或使用左侧的网络链接来搜索您的适配器

命令行参数

除非另有说明,否则每个参数的默认值通常是建议的设置。

注意

有关 AutoNeg、Duplex 和 Speed 参数的更多信息,请参阅本文档中的“速度和双工配置”部分。

有关 InterruptThrottleRate、RxIntDelay、TxIntDelay、RxAbsIntDelay 和 TxAbsIntDelay 参数的更多信息,请参阅以下应用说明:http://www.intel.com/design/network/applnots/ap450.htm

AutoNeg

(仅在具有铜缆连接的适配器上受支持)

有效范围

0x01-0x0F, 0x20-0x2F

默认值

0x2F

此参数是一个位掩码,指定适配器通告的速度和双工设置。使用此参数时,不得指定 Speed 和 Duplex 参数。

注意

有关 AutoNeg 参数的更多信息,请参阅本自述文件的速度和双工部分。

Duplex

(仅在具有铜缆连接的适配器上受支持)

有效范围

0-2 (0=自动协商,1=半双工,2=全双工)

默认值

0

这定义了允许数据流动的方向。可以是一个方向或两个方向。如果双工和链路伙伴都设置为自动协商,则板卡会自动检测正确的双工。如果链路伙伴被强制(全双工或半双工),则双工默认为半双工。

FlowControl

有效范围

0-3 (0=无,1=仅 Rx,2=仅 Tx,3=Rx&Tx)

默认值

从 EEPROM 读取流控制设置

此参数控制以太网 PAUSE 帧的自动生成(Tx)和响应(Rx)。

InterruptThrottleRate

(在基于 Intel(R) 82542、82543 或 82544 的适配器上不受支持)

有效范围

0,1,3,4,100-100000 (0=关闭,1=动态,3=动态保守,4=简化平衡)

默认值

3

驱动程序可以限制适配器每秒为传入数据包生成的最多中断数。它通过向适配器写入一个基于适配器每秒将生成的最大中断数的值来实现此目的。

将 InterruptThrottleRate 设置为大于或等于 100 的值会将适配器编程为每秒最多发送那么多中断,即使有更多数据包进入也是如此。这会降低系统上的中断负载,并可在高负载下降低 CPU 利用率,但会由于数据包未被快速处理而增加延迟。

驱动程序的默认行为以前假定 InterruptThrottleRate 的静态值为 8000,为所有流量类型提供良好的回退值,但缺乏小数据包性能和延迟。然而,硬件每秒可以处理更多的小数据包,因此,实现了一种自适应中断调节算法。

自 7.3.x 起,驱动程序有两种自适应模式(设置 1 或 3),其中它会根据接收到的流量动态调整 InterruptThrottleRate 值。在确定上一时间范围内传入流量的类型后,它会将 InterruptThrottleRate 调整为适合该流量类型的值。

该算法将每个时间间隔的传入流量分类。确定类别后,会调整 InterruptThrottleRate 值以最适合该流量类型。定义了三个类别:“批量流量”,用于大量正常大小的数据包;“低延迟”,用于少量流量和/或小数据包的显著百分比;以及“最低延迟”,用于几乎完全是小数据包或最少流量。

在动态保守模式下,对于属于“批量流量”类别的流量,InterruptThrottleRate 值设置为 4000。如果流量属于“低延迟”或“最低延迟”类别,则 InterruptThrottleRate 会逐步增加到 20000。此默认模式适用于大多数应用程序。

对于诸如集群或网格计算等低延迟至关重要的情况,当 InterruptThrottleRate 设置为模式 1 时,该算法可以进一步降低延迟。在此模式下,其操作方式与模式 3 相同,对于属于“最低延迟”类别的流量,InterruptThrottleRate 将逐步增加到 70000。

在简化模式下,中断率基于 TX 和 RX 流量的比率。如果每秒字节速率大致相等,则中断率将降至每秒 2000 个中断。如果流量主要是发送或主要是接收,则中断率可能高达 8000。

将 InterruptThrottleRate 设置为 0 会关闭任何中断调节,并可能会提高小数据包延迟,但通常不适用于批量吞吐量流量。

注意

InterruptThrottleRate 优先于 TxAbsIntDelay 和 RxAbsIntDelay 参数。换句话说,最小化接收和/或发送绝对延迟不会强制控制器生成比 Interrupt Throttle Rate 允许的更多中断。

警告

如果您使用的是 Intel(R) PRO/1000 CT 网络连接(控制器 82547),则在某些网络条件下,将 InterruptThrottleRate 设置为大于 75,000 的值可能会挂起(停止传输)适配器。如果发生这种情况,则会在系统事件日志中记录 NETDEV WATCHDOG 消息。此外,控制器会自动重置,从而恢复网络连接。为了消除挂起的可能性,请确保 InterruptThrottleRate 设置为不大于 75,000 且未设置为 0。

注意

当 e1000 以默认设置加载并且同时使用多个适配器时,CPU 利用率可能会非线性增加。为了在不影响总体吞吐量的情况下限制 CPU 利用率,我们建议您按如下方式加载驱动程序

modprobe e1000 InterruptThrottleRate=3000,3000,3000

这会将驱动程序的第一个、第二个和第三个实例的 InterruptThrottleRate 设置为 3000 个中断/秒。每秒 2000 到 3000 个中断的范围适用于大多数系统,并且是一个良好的起点,但最佳值将是特定于平台的。如果 CPU 利用率不是问题,请使用 RX_POLLING (NAPI) 和默认驱动程序设置。

RxDescriptors

有效范围
  • 对于基于 82542 和 82543 的适配器,为 48-256

  • 对于所有其他支持的适配器,为 48-4096

默认值

256

此值指定驱动程序分配的接收缓冲区描述符的数量。增加此值允许驱动程序缓冲更多传入数据包,但会增加系统内存利用率。

每个描述符为 16 字节。还为每个描述符分配一个接收缓冲区,该缓冲区可以是 2048、4096、8192 或 16384 字节,具体取决于 MTU 设置。最大 MTU 大小为 16110。

注意

MTU 指定帧大小。仅需要为巨型帧设置它。根据可用的系统资源,可能会拒绝请求更多接收描述符。在这种情况下,请使用较小的数字。

RxIntDelay

有效范围

0-65535 (0=关闭)

默认值

0

此值以 1.024 微秒为单位延迟接收中断的生成。如果针对特定网络流量正确调整,则减少接收中断可以提高 CPU 效率。增加此值会为帧接收增加额外的延迟,并最终可能会降低 TCP 流量的吞吐量。如果系统报告接收丢失,则此值可能设置得太高,导致驱动程序耗尽可用的接收描述符。

警告

当将 RxIntDelay 设置为 0 以外的值时,在某些网络条件下,适配器可能会挂起(停止传输)。如果发生这种情况,则会在系统事件日志中记录 NETDEV WATCHDOG 消息。此外,控制器会自动重置,从而恢复网络连接。为了消除挂起的可能性,请确保 RxIntDelay 设置为 0。

RxAbsIntDelay

(此参数仅在 82540、82545 和更高版本的适配器上受支持。)

有效范围

0-65535 (0=关闭)

默认值

128

此值以 1.024 微秒为单位,限制生成接收中断的延迟。仅当 RxIntDelay 不为零时才有用,此值可确保在最初的数据包在设定的时间内收到后生成中断。通过与 RxIntDelay 正确调整,可以在特定网络条件下提高流量吞吐量。

Speed

(此参数仅在具有铜缆连接的适配器上受支持。)

有效设置

0, 10, 100, 1000

默认值

0(以所有支持的速度自动协商)

Speed 强制线路速度为以兆比特每秒 (Mbps) 为单位的指定值。如果未指定此参数或将其设置为 0,并且链路伙伴设置为自动协商,则板卡将自动检测正确的速度。当 Speed 设置为 10 或 100 时,还应设置 Duplex。

TxDescriptors

有效范围
  • 对于基于 82542 和 82543 的适配器,为 48-256

  • 对于所有其他支持的适配器,为 48-4096

默认值

256

此值是驱动程序分配的发送描述符的数量。增加此值允许驱动程序排队更多发送。每个描述符为 16 字节。

注意

根据可用的系统资源,可能会拒绝请求更多发送描述符。在这种情况下,请使用较小的数字。

TxIntDelay

有效范围

0-65535 (0=关闭)

默认值

8

此值以 1.024 微秒为单位延迟发送中断的生成。如果针对特定网络流量正确调整,则减少发送中断可以提高 CPU 效率。如果系统报告发送丢失,则此值可能设置得太高,导致驱动程序耗尽可用的发送描述符。

TxAbsIntDelay

(此参数仅在 82540、82545 和更高版本的适配器上受支持。)

有效范围

0-65535 (0=关闭)

默认值

32

此值以 1.024 微秒为单位,限制生成发送中断的延迟。仅当 TxIntDelay 不为零时才有用,此值可确保在最初的数据包在设定的时间内发送到线路上后生成中断。通过与 TxIntDelay 正确调整,可以在特定网络条件下提高流量吞吐量。

XsumRX

(此参数在基于 82542 的适配器上**不**受支持。)

有效范围

0-1

默认值

1

值为“1”表示驱动程序应启用接收数据包(包括 UDP 和 TCP)的 IP 校验和卸载到适配器硬件。

复制中断

有效范围

0-xxxxxxx(0=关闭)

默认值

256

用法:

modprobe e1000.ko copybreak=128

驱动程序将所有小于或等于此大小的数据包复制到新的 RX 缓冲区,然后再将其传递到协议栈。

此参数与其他参数不同,它是应用于所有驱动程序实例的单个参数(不是 1,1,1 等),并且它在运行时也可通过 /sys/module/e1000/parameters/copybreak 访问。

智能电源关闭启用

有效范围

0-1

默认值

0(禁用)

允许 PHY 在较低功耗状态下关闭。用户可以在支持的芯片组中关闭此参数。

速度和双工配置

使用三个关键字来控制速度和双工配置。这些关键字是 Speed(速度)、Duplex(双工)和 AutoNeg(自动协商)。

如果板卡使用光纤接口,则会忽略这些关键字,并且光纤接口板卡仅以 1000 Mbps 全双工连接。

对于基于铜线的板卡,关键字的交互方式如下:

  • 默认操作是自动协商。板卡会广播所有支持的速度和双工组合,并且如果链路伙伴设置为自动协商,则它会以最高的通用速度和双工模式连接。

  • 如果 Speed = 1000,则启用有限的自动协商,并且仅广播 1000 Mbps(1000BaseT 规范要求自动协商。)

  • 如果 Speed = 10 或 100,则应同时设置 Speed 和 Duplex。自动协商被禁用,并且忽略 AutoNeg 参数。链路伙伴也应该被强制。

当需要对自动协商过程进行更多控制时,将使用 AutoNeg 参数。当您希望控制在自动协商过程中广播的速度和双工组合时,应该使用它。

该参数可以指定为十进制或十六进制值,具体取决于下面的位图。

位位置

7

6

5

4

3

2

1

0

十进制值

128

64

32

16

8

4

2

1

十六进制值

80

40

20

10

8

4

2

1

速度(Mbps)

不适用

不适用

1000

不适用

100

100

10

10

双工

全双工

全双工

半双工

全双工

半双工

使用 AutoNeg 的一些示例

modprobe e1000 AutoNeg=0x01 (Restricts autonegotiation to 10 Half)
modprobe e1000 AutoNeg=1 (Same as above)
modprobe e1000 AutoNeg=0x02 (Restricts autonegotiation to 10 Full)
modprobe e1000 AutoNeg=0x03 (Restricts autonegotiation to 10 Half or 10 Full)
modprobe e1000 AutoNeg=0x04 (Restricts autonegotiation to 100 Half)
modprobe e1000 AutoNeg=0x05 (Restricts autonegotiation to 10 Half or 100
Half)
modprobe e1000 AutoNeg=0x020 (Restricts autonegotiation to 1000 Full)
modprobe e1000 AutoNeg=32 (Same as above)

请注意,当使用此参数时,不得指定 Speed 和 Duplex。

如果链路伙伴被强制设置为特定的速度和双工,则不应使用此参数。相反,请使用先前提到的 Speed 和 Duplex 参数来强制适配器使用相同的速度和双工。

其他配置

巨型帧

通过将 MTU 更改为大于默认值 1500 的值来启用巨型帧支持。使用 ifconfig 命令来增加 MTU 大小。例如

ifconfig eth<x> mtu 9000 up

此设置不会在重启后保存。如果添加

MTU=9000

到文件 /etc/sysconfig/network-scripts/ifcfg-eth<x>,则可以使其永久生效。此示例适用于 Red Hat 发行版;其他发行版可能会将此设置存储在不同的位置。

注释

在某些巨型帧环境中可能会观察到吞吐量性能下降。如果观察到这种情况,则增加应用程序的套接字缓冲区大小和/或增加 /proc/sys/net/ipv4/tcp_*mem 条目值可能会有所帮助。有关更多详细信息,请参阅具体的应用程序手册和 /usr/src/linux*/Documentation/networking/ip-sysctl.txt。

  • 巨型帧的最大 MTU 设置为 16110。此值与巨型帧的最大大小 16128 相符。

  • 不支持在 10 或 100 Mbps 下使用巨型帧,这可能会导致性能不佳或链路丢失。

  • 基于 Intel(R) 82542 和 82573V/E 控制器的适配器不支持巨型帧。这些对应于以下产品名称:

    Intel(R) PRO/1000 Gigabit Server Adapter
    Intel(R) PRO/1000 PM Network Connection
    

ethtool

驱动程序使用 ethtool 接口进行驱动程序配置和诊断,以及显示统计信息。此功能需要 ethtool 版本 1.6 或更高版本。

可以在 https://linuxkernel.org.cn/pub/software/network/ethtool/ 上找到 ethtool 的最新版本

启用局域网唤醒(WoL)

WoL 通过 ethtool 实用程序进行配置。

WoL 将在系统下次关闭或重启时启用。对于此驱动程序版本,为了启用 WoL,在关闭或重启系统时必须加载 e1000 驱动程序。

支持

有关一般信息,请访问 Intel 支持网站:http://support.intel.com

如果在使用受支持适配器的受支持内核上的已发布源代码时发现问题,请将与该问题相关的特定信息通过电子邮件发送至 intel-wired-lan@lists.osuosl.org