GPU实例宕机故障排查
故障现象
使用CentOS等Linux系统的GPU实例且部署的业务会频繁进行内存分配时,实例发生宕机。
故障原因
CentOS等Linux操作系统默认开启透明大页,若您GPU实例上部署的业务中有频繁的内存分配场景,就可能触发透明大页频繁进行内存规整、内存迁移等操作来聚合透明大页,这些操作可能会通过发送ipi让某个CPU执行flush tlb操作,当这些flush tlb操作堆积起来,CPU没办法调度其他进程运行,可能造成soft lockup,最终导致系统宕机。
透明大页THP(Transparent Huge Pages)是Linux内核中的一个通用特性,它可以自动将小页面合并成大页面,减小TLB miss,提高内存访问的效率。但是,透明大页的存在有可能会造成系统的卡顿,更严重的可能造成宕机。所以需要您根据自己的业务场景来决定打开或者关闭。
一般而言,如果用户的业务有频繁的短生命周期的内存分配的场景,比如AI训练、PFS等场景,建议关闭透明大页功能。
处理步骤
验证是否由于透明大页引起
步骤一 登录服务器
可以通过ssh远程连接服务器,如果无法远程连接,可以使用VNC登录。
步骤二 查看系统日志
1.使用cd
进入/var/crash
目录或者/home/coresave
目录下查看,如果有类似有
127.0.0.1-2024-07-23-15:00:45
这样的目录,说明kdump服务将宕机发生时的信息记录了下来。进入这个目录,可以看到存在一个vmcore-dmesg.txt
文件:
2.打开vmcore-dmesg.txt
文件,如果发现异常栈中有如下函数调用,比如do_huge_pmd_anonymous_page
,说明可能是因为透明大页引起的异常。
3.使用如下命令查看当前机器上是否开启透明大页:
cat /sys/kernel/mm/transparent_hugepage/enabled
如果发现如下显示,说明透明大页是开启状态。
关闭透明大页
您可以通过执行以下命令来持久化关闭透明大页,但该命令需要重启系统才能生效。
sudo grubby --args="transparent_hugepage=never" --update-kernel="/boot/vmlinuz-$(uname -r)"
若您当前不想重启系统,可以也执行以下命令临时关闭透明大页:
sudo sh -c 'echo "never" > /sys/kernel/mm/transparent_hugepage/enabled'
如此不用重启系统,透明大页已关闭,若后续系统重启,持久化关闭透明大页命令生效,透明大页仍处于关闭状态。
关闭大页后,您可以尝试运行业务,观测一段时间,看是否还会宕机。若仍会宕机,可提交工单联系技术人员协助排查。