AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 616485
Accepted
Kyle Coots
Kyle Coots
Asked: 2014-07-30 19:49:18 +0800 CST2014-07-30 19:49:18 +0800 CST 2014-07-30 19:49:18 +0800 CST

e1000e 意外重置适配器/检测到硬件单元挂起

  • 772

我有一台戴尔 1U 服务器,配备 Intel(R) Xeon(R) CPU L5420 @ 2.50GHz,8 个内核,在 x86_64 上运行 Ubuntu 服务器内核版本 3.13.0-32-generic。它有双 1000baseT 网卡。我将其设置为将数据包从 eth0 转发到 eth1。

我注意到在我的 kern.log 文件中它一直挂起然后休息。这种情况经常发生。这种情况每隔几秒钟发生一次,然后可能几分钟就可以了,然后每隔几秒钟就会恢复一次。

这是日志文件转储:

 [118943.768245] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
 [118943.768245]   TDH                  <45>
 [118943.768245]   TDT                  <50>
 [118943.768245]   next_to_use          <50>
 [118943.768245]   next_to_clean        <43>
 [118943.768245] buffer_info[next_to_clean]:
 [118943.768245]   time_stamp           <101c48d04>
 [118943.768245]   next_to_watch        <45>
 [118943.768245]   jiffies              <101c4970f>
 [118943.768245]   next_to_watch.status <0>
 [118943.768245] MAC Status             <80283>
 [118943.768245] PHY Status             <792d>
 [118943.768245] PHY 1000BASE-T Status  <7800>
 [118943.768245] PHY Extended Status    <3000>
 [118943.768245] PCI Status             <10>
 [118944.780015] e1000e 0000:00:19.0 eth0: Reset adapter unexpectedly

以下是来自 ethtool 的信息:

设置:

Settings for eth0:

Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full 
                        100baseT/Half 100baseT/Full 
                        1000baseT/Full 
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full 
                        100baseT/Half 100baseT/Full 
                        1000baseT/Full 
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
               drv probe link
Link detected: yes

司机信息:

ethtool -i eth0

driver: e1000e
version: 2.3.2-k
firmware-version: 1.4-0
bus-info: 0000:00:19.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

这可能是什么原因造成的?这只是软件中的错误还是实际的硬件问题?我见过许多其他有类似问题但没有真正解决方案的人,这也让我相信这是一个软件问题?

也许有人可以为我阐明这一点?

networking
  • 6 6 个回答
  • 80280 Views

6 个回答

  • Voted
  1. Best Answer
    Kyle Coots
    2014-07-31T06:14:20+08:002014-07-31T06:14:20+08:00

    好的,所以在昨晚发布这个问题后,我继续做一些研究,我遇到的唯一真正的解决方案似乎已经解决了这个问题。

    使用 ethtool 禁用 TSO、GSO 和 GRO:

    ethtool -K eth0 gso off gro off tso off
    

    根据在这里找到的帖子:http: //ehc.ac/p/e1000/bugs/378/

    据我了解,这将或可能导致性能下降。

    我还注意到另一个解决方案是禁用活动状态电源管理

    pcie_aspm=off
    

    根据 serverfault 上的这篇文章:Linux e1000e(英特尔网络驱动程序)问题很多,我从哪里开始?

    我还没有尝试过这个解决方案。我会尝试一下,看看是否会有所作为,然后发回我的发现。

    编辑:

    好的,所以我尝试关闭活动状态电源管理, pcie_aspm=off 但这没有任何效果。我继续注意到我的日志文件中的错误。

    这可能对某些人仍然有效,因为某些英特尔网卡在启用电源管理时会出现不同内核入睡的问题。

    • 42
  2. SteveG
    2016-04-25T10:00:58+08:002016-04-25T10:00:58+08:00

    在 BIOS 中禁用增强型 C1 (C1E) 为我修复了它。

    不确定 C1E 的低功耗状态是否与驱动程序混淆,或者当处理器处于此状态时驱动程序中存在 oops。

    总之,问题解决了。

    • 9
  3. David Scherfgen
    2020-08-31T00:18:08+08:002020-08-31T00:18:08+08:00

    仅禁用TCP 分段卸载 (TSO) 对我有用。

    ethtool -K eth0 tso off
    

    注意:似乎没有必要同时禁用通用接收卸载 (GRO) 和通用分段卸载 (GSO),因为各种来源都建议这样做。据我所知,这些都是纯软件实现的,应该是安全的。不要牺牲不必要的性能。

    • 7
  4. Jocelyn delalande
    2016-12-16T02:07:55+08:002016-12-16T02:07:55+08:00

    我遇到了问题(触发与您相同的内核错误和用户空间 SSH 错误,如“ Corrupted MAC on input”)。

    解决方案

    对我有用的是禁用 TCP 校验和卸载:

    # ethtool -K eth0 tx off rx off

    将此与 debian-ish /etc/network/interfaces进行清洁和长期集成:

    #!/bin/bash
    #
    # Disables TCP offloading on all ifaces
    #
    # Inspired by: @Michelunik https://serverfault.com/a/422554/62953
    
    RUN=true
    case "${IF_NO_TOE,,}" in
        no|off|false|disable|disabled)
            RUN=false
        ;;
    esac
    
    
    # Other offloading options that could be disabled (not TCP related):
    #  sg tso ufo gso gro lro rxvlan txvlan rxhash
    # see man ethtool
    
    if [ "$MODE" = start -a "$RUN" = true ]; then
      TOE_OPTIONS="rx tx"
      for TOE_OPTION in $TOE_OPTIONS; do
        /sbin/ethtool --offload "$IFACE" "$TOE_OPTION" off &>/dev/null || true
      done
    fi
    

    来源,灵感。

    语境

    • Debian 杰西
    • 内核 4.7.0-0.bpo.1-amd64
    • lspci 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I218-V (rev 04)
    • 2
  5. janfrode
    2022-01-30T12:59:19+08:002022-01-30T12:59:19+08:00

    我刚刚偶然发现了这个来自英特尔的自述文件:

    https://downloadmirror.intel.com/15817/eng/readme.txt

    它说

    82573(V/L/E) TX 单元挂起消息

    带有 82573 芯片组的多个适配器在使用 e1000edriver 正常运行期间显示“TX 单元挂起”消息。该问题在启用和禁用 TSO 时都会出现,并且是由在 EEPROM 中启用的电源管理功能引起的。早期向供应商发布的芯片组具有启用该功能的 EEPROM 位。发现问题后,发布了更新的适配器,并在 EEPROM 中禁用了该功能。

    如果您在适配器中遇到问题,并且芯片组是基于 82573 的芯片组,您可以使用 ethtool 验证您的适配器是否需要修复:

    ethtool -e eth0

    偏移值


    0x0000 00 12 34 56 fe dc 30 0d 46 f7 f4 00 ff ff ff ff

    0x0010 ff ff ff ff 6b 02 8c 10 d9 15 8c 10 86 80 德 83

    偏移量 0x001e (de) 处的值未设置位 0。这启用了有问题的省电功能。在这种情况下,EEPROM 需要在偏移量 0x001e 处读取“df”。

    不幸的是,我有问题的适配器是两个不同 NUC 中的 82579V 和 I219-V,所以不清楚相同的修复是否适用于我。

    • 0
  6. Fred Flint
    2015-08-02T14:09:00+08:002015-08-02T14:09:00+08:00

    尝试更新您的驱动程序。不知道 Ubuntu 的位置或推荐的版本,但对于 CentOS 或 EL 6 它是:

    http://mirror.symnds.com/distributions/elrepo/elrepo/el6/x86_64/RPMS/kmod-e1000e-3.1.0.2-1.el6.elrepo.x86_64.rpm

    • -1

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve