在ECS实例内删除cgroup出现softlockup异常,如何处理?

如果您在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:建议升级内核版本

    1. 运行以下命令,升级内核版本。

      yum update kernel
    2. 运行以下命令,重启ECS实例。

      reboot
    3. 重启后,查看内核版本是否大于等于3.10.0-1160。

      uname -r
  • Alibaba Cloud Linux:不会出现softlockup异常

  • 其他操作系统版本:建议手动升级内核版本至4.17以上