下载
中文
注册
Atlas 800-3010 Ubuntu16.04.2 执行 S4,系统唤醒失败

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

问题现象:

  1. 进入OS,后台运行top进程,执行echo disk > /sys/power/state命令,系统下电,KVM显示power off。
  2. 在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 空闲

  
实验分析:
  1. 对比实验3、5可以得到:无 action 中断由 i40e 产生。
  2. 对比实验3、4可以得到:有网口没up,CPU 0 上就会出现无 action 中断。
  3. 从实验3可以得到:S4 未成功释放 i40e 中断。
  4. 对比实验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 升级驱动。

备注

本页内容