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

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

目录

  • 识别您的适配器

  • 命令行参数

  • 速度和双工配置

  • 额外配置

  • 支持

识别您的适配器

有关如何识别您的适配器的更多信息,请参阅以下位置的适配器和驱动程序 ID 指南:

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

命令行参数

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

注意事项

有关 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

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

FlowControl

有效范围:

0-3(0=无,1=仅接收,2=仅发送,3=接收和发送)

默认值:

从 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 参数。换句话说,最小化接收和/或发送的绝对延迟不会强制控制器生成超过中断节流率允许的中断。

警告

如果您正在使用 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 校验和卸载到适配器硬件。

Copybreak

有效范围:

0-xxxxxxx(0=关闭)

默认值:

256

用法:

modprobe e1000.ko copybreak=128

驱动程序在将所有小于或等于此大小的数据包上交给堆栈之前,将其复制到新的 RX 缓冲区。

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

SmartPowerDownEnable

有效范围:

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 或更高版本。

ethtool 的最新版本可从以下网址获取:https://linuxkernel.org.cn/pub/software/network/ethtool/

启用局域网唤醒 (WoL)

WoL 通过 ethtool 实用程序配置。

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

支持

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

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