Atlas 800-3010 Ubuntu16.04.2 执行 S4,系统唤醒失败
2021/09/06
38
问题信息
问题来源 | 产品大类 | 产品子类 | 关键字 |
---|---|---|---|
版本测试 | 安装部署 | 驱动固件 | S4、Ubuntu16.04.2、唤醒失败 |
问题现象描述
硬件配置:
Atlas 800-3010
CPU1 Intel(R) Xeon(R) Gold 6151 CPU @ 3.00GHz
CPU2 Intel(R) Xeon(R) Gold 6151 CPU @ 3.00GHz
DIMM000 mainboard Samsung 32768 MB 2133 MHz 40C981F8 DDR4
DIMM100 mainboard Samsung 32768 MB 2133 MHz 40C981F6 DDR4
RAID 类型:LSI SAS3508 固件版本:5.030.00-1330
网卡名称:LOM;型号:2*10GE+2*GE;芯片型号:X722;连接属性:Port1 断开,Port2断开,Port3连接,Port4连接;驱动版本:i40e-1.4.25-k
问题现象:
- 进入OS,后台运行top进程,执行echo disk > /sys/power/state命令,系统下电,KVM显示power off。
- 在BMC执行上电操作,BIOS POST阶段和正常上电现象一致,POST之后直接进入OS,但是OS并没有恢复到休眠前的状态(后台top进程没有运行)。
关键过程、根本原因分析
打印串口日志进行分析,可以看到 S4 进入成功:
S4 恢复过程出现如下错误 :
导致 S4 恢复失败:
因此初步判定 S4 失败原因确定为 CPU 0 空闲 vectors 不够(vector 用于记录中断),导致 CPU 55 taking down 失败。
于是打印了此时 CPU 0 上的 vector 数组内容,发现大量无 action 中断占据了 vector 数组。并且通过 crash 分析 live system 打印出 CPU 0 上 vector 数组,发现这些无 action 中断在系统正常运行时就在 CPU 0 上。
根据中断列表:
可以看到无 action 中断连续出现,并出现在 i40e 附近,于是卸载了 i40e 驱动,无 action 中断消失,因此可以确认这些无 action 中断由 i40e 触发。
同时发现中断列表中无 eno1、eno2 的“i40e-eno3-TxRx-0”类型中断,只有 eno3 和 eno4 有(复现环境 eno1、eno2 网口断开),猜测无 action 中断由没有连接的网口触发。
根据以上分析,猜测两个因素会影响 S4 的执行,i40e的驱动版本和网口连接数,于是做了下述实验:
实验 |
I40e 驱动版本 |
网口(4) |
S4 |
进入S4前 CPU 0 上 vector_irq |
进入时S4 CPU 0 上 vector_irq |
Irq 列表 |
1 |
2.4.6 |
Up 2个 |
成功 |
19 空闲 |
162 空闲 |
eno3、eno4 |
2 |
2.4.6 |
Up 4个 |
成功 |
161 空闲 |
162 空闲 |
eno1、eno2、eno3、eno4 |
3 |
1.4.25-k(inbox) |
Up 2个 |
失败 |
20 空闲,大量被无 action irq 占据 |
0个空闲 |
eno3、eno4 |
4 |
1.4.25-k(inbox) |
Up 4个 |
成功 |
164 空闲 |
143 空闲 |
eno1、eno2、eno3、eno4 |
5 |
卸载 |
Up 0个 |
成功 |
175 空闲 |
165 空闲 |
- 对比实验3、5可以得到:无 action 中断由 i40e 产生。
- 对比实验3、4可以得到:有网口没up,CPU 0 上就会出现无 action 中断。
- 从实验3可以得到:S4 未成功释放 i40e 中断。
- 对比实验1、3可以得到:没有释放无 action 中断才是 S4 失败的根本原因。
根据以上分析,S4 失败的根本原因为:Ubuntu16.04.2 inbox i40e 驱动在 S4 suspend 过程中,未释放未连接网口触发的无 action 中断,导致 CPU 0 空闲 vectors 被大量占用,使 CPU 无法 taking down,从而导致 S4 失败。
结论、解决方案及效果
结论:
Ubuntu16.04.2 inbox i40e 驱动(1.4.25-k)在 S4 suspend 过程中,未释放未连接网口触发的无 action 中断,导致 CPU 0 空闲 vectors 被大量占用,使 CPU 无法 taking down,从而导致 S4 失败。
解决方案:
升级 i40e 驱动到最新版本(2.4.6 及以上)。
经验总结、预防措施和规范建议
建议安装完系统后使用 iDriver 升级驱动。
备注
无
本页内容