Ubuntu 22.04.4 LTS(内核5.15.0-101)下igc驱动触发系统挂起的问题求助
我在Ubuntu 22.04.4 LTS(内核版本5.15.0-101)上碰到了一个头疼的问题:当进行大IO传输时,系统直接就挂起了。经过调试排查,发现问题根源出在intel igc网卡驱动上,对应的内核panic日志如下:
Aug 28 15:31:39 Future-CH kernel: [565246.653285] ------------[ cut here ]------------ Aug 28 15:31:39 Future-CH kernel: [565246.653291] NETDEV WATCHDOG: ETH04 (igc): transmit queue 3 timed out Aug 28 15:31:39 Future-CH kernel: [565246.653319] WARNING: CPU: 3 PID: 0 at net/sched/sch_generic.c:477 dev_watchdog+0x277/0x280 Aug 28 15:31:39 Future-CH kernel: [565246.653333] Modules linked in: ipt_NETFLOW(OE) xt_nat xfrm_user xt_MASQUERADE cfg80211 bonding tls ip_set_hash_mac xt_TCPMSS xt_connbytes xt_hl xt_bpf nf_conntrack_netlink xt_DSCP xt_recent xt_LOG nf_log_syslog xt_hashlimit xt_state...
想请教各位大佬,有没有办法解决这个挂起问题?或者是否有某个更新的内核版本已经修复了这个bug?麻烦帮忙指点一下解决方案,万分感谢!
可行的解决方案建议
作为经常处理这类内核驱动问题的开发者,给你几个实用的方向:
更新到同系列最新稳定内核补丁
你当前用的5.15.0-101是比较旧的版本,Ubuntu会持续给LTS内核打bug修复补丁。可以通过以下命令更新到5.15分支的最新稳定版:sudo apt update && sudo apt upgrade linux-image-generic linux-headers-generic更新完成后重启系统,再测试大IO场景是否还会触发挂起。
切换到Ubuntu HWE内核分支
如果同系列内核补丁没解决问题,可以尝试启用HWE(硬件适配)内核,它会提供更新的内核分支(比如22.04当前的HWE内核是6.2系列),通常包含更多驱动修复:sudo apt install linux-generic-hwe-22.04安装后重启系统,验证问题是否消失。
临时缓解方案(紧急场景可用)
如果暂时无法更新内核,可以尝试调整网卡传输参数,关闭可能引发问题的高级特性:- 关闭TSO(TCP分段卸载)和GRO(通用接收卸载):
sudo ethtool -K ETH04 tso off gro off - 调整传输队列长度(可根据硬件情况调整数值,示例设置为1024):
sudo ethtool -G ETH04 tx 1024
注意:这些设置是临时生效的,重启后会恢复默认值,如果有效可以写入
/etc/rc.local或者网卡配置文件来持久化。- 关闭TSO(TCP分段卸载)和GRO(通用接收卸载):
确认已知bug修复情况
igc驱动的transmit queue timed out问题在多个内核版本中都有报告,后续的5.15.xx补丁以及5.19+的内核中已经修复了不少类似大IO场景下的挂起问题,所以升级内核是最直接有效的解决方案。
备注:内容来源于stack exchange,提问作者vinayagamoorthym

