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.使用如下命令查看当前机器上是否开启透明大页:
Plain Text 复制
11cat /sys/kernel/mm/transparent_hugepage/enabled
如果发现如下显示,说明透明大页是开启状态。

关闭透明大页
您可以通过执行以下命令来持久化关闭透明大页,但该命令需要重启系统才能生效。
Plain Text 复制
11sudo grubby --args="transparent_hugepage=never" --update-kernel="/boot/vmlinuz-$(uname -r)"
若您当前不想重启系统,可以也执行以下命令临时关闭透明大页:
Plain Text 复制
11sudo sh -c 'echo "never" > /sys/kernel/mm/transparent_hugepage/enabled'
如此不用重启系统,透明大页已关闭,若后续系统重启,持久化关闭透明大页命令生效,透明大页仍处于关闭状态。

关闭透明大页后,您可以尝试运行业务并观测一段时间,确认实例是否还会宕机。若仍会宕机,可 提交工单 联系技术人员协助排查。
评价此篇文章
