rhel + eth0:检测到 Tx 单元挂起

rhel + eth0:检测到 Tx 单元挂起

亲爱的朋友和大学

我们有 rhel 7.2 版本的虚拟机 -3.10.0-327.el7.x86_64

我们注意到以下消息(来自/var/log/messages

 e1000 0000:02:01.0 eth0: Detected Tx Unit Hang#012  Tx Queue             <0>#012  TDH                  <45>#012  TDT  

从 dmesg 中我们得知

[21519947.519425] e1000 0000:02:01.0 eth0: Detected Tx Unit Hang
  Tx Queue             <0>
  TDH                  <45>
  TDT                  <45>
  next_to_use          <26>
  next_to_clean        <45>
buffer_info[next_to_clean]
  time_stamp           <6032d5901>
  next_to_watch        <47>
  jiffies              <6032d75ab>
  next_to_watch.status <0>
[21519949.521583] e1000 0000:02:01.0 eth0: Detected Tx Unit Hang
  Tx Queue             <0>
  TDH                  <45>
  TDT                  <45>
  next_to_use          <26>
  next_to_clean        <45>
buffer_info[next_to_clean]
  time_stamp           <6032d5901>
  next_to_watch        <47>
  jiffies              <6032d7d7e>
  next_to_watch.status <0>
[21519949.811366] e1000 0000:02:01.0 eth0: Reset adapter
[21519949.855081] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

我们尝试搜索上述问题的解决方案,并看到有关以下修复的帖子

设置以下内容/etc/sysctl.conf,然后重新启动机器

pcie_aspm=offet ( https://serverfault.com/questions/193114/linux-e1000e-intel-networking-driver-problems-galore-where-do-i-start )

或者

ethtool -K eth0 tso off gso off

或者

更改了网络适配器VMNETX3.

等等 ....

所以我们对正确的解决方案感到困惑

请建议解决我们问题的正确方法是什么?

答案1

这是旧内核的一个已知问题(Bugzilla 1288237)。该修复已向后移植到较新的 kernsla 中,并根据以下安全建议进行跟踪:

该问题被认为是由以下上游提交引入的: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b4ded8327fea82b53fcec39e0845011246d020f4

对于早于 3.10.0-514.el7 的内核,一些用户报告说,当通过 ethtool 禁用受影响接口上的 Scatter-Gather 卸载引擎时,该行为就会停止发生:

# ethtool -K <interface> sg off

有关更多信息,请查看 Red Hat 的知识库文章:https://access.redhat.com/solutions/2070703

一般来说,由于 RHEL 提供了稳定的 ABI 和 API 接口,运行过时的软件很少有任何好处,应该更新到正在运行的主要版本(例如 RHEL 7、RHEL &)的最新补丁版本。

相关内容