如果您在ECS实例中删除cgroup时系统偶现softlockup异常,则可以参考本文提供的方案解决问题。
问题现象
在ECS实例内删除容器时出现softlockup异常,并产生类似于如下所示的调用栈:
[3302742.447940] Kernel panic - not syncing: softlockup: hung tasks
[3302742.448677] CPU: 18 PID: 1 Comm: systemd Kdump: loaded Tainted: G OEL ------------ T 3.10.0-862.14.4.el7.x86_64 #1
[3302742.450167] Hardware name: Alibaba Cloud Alibaba Cloud ECS, BIOS 8a46cfe 04/01/2014
[3302742.462123] [] mem_cgroup_reparent_charges+0x16d/0x3c0
[3302742.463243] [] mem_cgroup_css_offline+0x84/0x140
[3302742.464327] [] cgroup_destroy_locked+0xea/0x370
[3302742.465414] [] cgroup_rmdir+0x22/0x40
[3302742.466434] [] vfs_rmdir+0xdc/0x150
[3302742.467449] [] do_rmdir+0x1f1/0x220
[3302742.468470] [] ? ____fput+0xe/0x10
[3302742.469495] [] ? task_work_run+0xc0/0xe0
[3302742.470578] [] SyS_rmdir+0x16/0x20
[3302742.471628] [] system_call_fastpath+0x22/0x27
问题原因
当您在实例内删除cgroup时,系统会循环把使用中的内存页计算到上一层的cgroup中,如果cgroup占用内存过大,系统处理时间则会变长。系统处理过程中没有调度检测点,从而导致系统出现softlockup异常。
解决方案
重要 在操作前,建议您为ECS实例创建快照备份数据,避免因误操作造成的数据丢失。创建快照的更多信息,请参见快照概述。
不同的操作系统版本,处理方式不同。具体说明如下:
CentOS:建议升级内核版本
运行以下命令,升级内核版本。
yum update kernel
运行以下命令,重启ECS实例。
reboot
重启后,查看内核版本是否大于等于3.10.0-1160。
uname -r
Alibaba Cloud Linux:不会出现softlockup异常
其他操作系统版本:建议手动升级内核版本至4.17以上