本文介绍使用自建账号登录Windows实例后提示“Windows资源管理器已停止工作”的问题原因及解决方案。
问题描述
在符合如下条件的Alibaba Cloud Linux 3实例中,系统运行时出现rq->nr_running统计异常的问题。
镜像:Alibaba Cloud Linux 3.2104 64位
内核:5.10.60-9.al8.x86_64
两层cgroup同时throttle时会导致rq->nr_running低于正常值,出现以下溢出的情况,从而导致load统计不正确、调度异常、soft lockup等问题。其中soft lockup提示以下调用栈信息:
Sep 7 20:24:47 l80c11217.ea120 kernel: INFO: task bash:130503 blocked for more than 122 seconds.
Sep 7 20:24:47 l80c11217.ea120 kernel: Tainted: G S OE 5.10.23-001.ali5000_20210905_2f9a6ae7f7_cbp.alios7.x86_64 #1
Sep 7 20:24:47 l80c11217.ea120 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Sep 7 20:24:47 l80c11217.ea120 kernel: task:bash state:D stack: 0 pid:130503 ppid:130502 flags:0x00000000
Sep 7 20:24:47 l80c11217.ea120 kernel: Call Trace:
Sep 7 20:24:47 l80c11217.ea120 kernel: __schedule+0x283/0x6d0
Sep 7 20:24:47 l80c11217.ea120 kernel: ? cpu_stop_queue_work+0x79/0x160
Sep 7 20:24:47 l80c11217.ea120 kernel: ? usleep_range+0x80/0x80
Sep 7 20:24:47 l80c11217.ea120 kernel: schedule+0x46/0xb0
Sep 7 20:24:47 l80c11217.ea120 kernel: schedule_timeout+0xff/0x140
Sep 7 20:24:47 l80c11217.ea120 kernel: ? __trace_bprintk+0x6e/0x80
Sep 7 20:24:47 l80c11217.ea120 kernel: ? __prepare_to_swait+0x4b/0x70
Sep 7 20:24:47 l80c11217.ea120 kernel: __wait_for_common+0xa6/0x150
Sep 7 20:24:47 l80c11217.ea120 kernel: stop_one_cpu+0xab/0xe0
Sep 7 20:24:47 l80c11217.ea120 kernel: ? set_cpus_allowed_ptr+0x10/0x10
Sep 7 20:24:47 l80c11217.ea120 kernel: ? select_task_rq_fair+0x12c/0x2e0
Sep 7 20:24:47 l80c11217.ea120 kernel: sched_exec+0x88/0xd0
Sep 7 20:24:47 l80c11217.ea120 kernel: bprm_execve+0xec/0x230
Sep 7 20:24:47 l80c11217.ea120 kernel: do_execveat_common+0x192/0x1c0
Sep 7 20:24:47 l80c11217.ea120 kernel: __x64_sys_execve+0x39/0x50
Sep 7 20:24:47 l80c11217.ea120 kernel: do_syscall_64+0x2d/0x40
Sep 7 20:24:47 l80c11217.ea120 kernel: entry_SYSCALL_64_after_hwframe+0x44/0xa9
Sep 7 20:24:47 l80c11217.ea120 kernel: RIP: 0033:0x1461f4de5c37
Sep 7 20:24:47 l80c11217.ea120 kernel: RSP: 002b:00007ffcd19c8058 EFLAGS: 00000202 ORIG_RAX: 000000000000003b
Sep 7 20:24:47 l80c11217.ea120 kernel: RAX: ffffffffffffffda RBX: 00000000011fcc20 RCX: 00001461f4de5c37
Sep 7 20:24:47 l80c11217.ea120 kernel: RDX: 00000000011fbcf0 RSI: 00000000011fcca0 RDI: 00000000011fcc20
Sep 7 20:24:47 l80c11217.ea120 kernel: RBP: 00000000011fcc60 R08: 0000000000000000 R09: 0000000000000018
Sep 7 20:24:47 l80c11217.ea120 kernel: R10: 00007ffcd19c74a0 R11: 0000000000000202 R12: 0000000000000000
Sep 7 20:24:47 l80c11217.ea120 kernel: R13: 00000000011fcca0 R14: 00000000011fbcf0 R15: 0000000000000000
问题原因
两层cgroup同时throttle时没有判断调度实体是否为空,直接将rq->nr_running减一,导致rq->nr_running统计异常。
解决方案
当遇到该问题时,您可以参考以下任意一种方法进行处理。
方法一:升级系统内核
请根据现场实际情况,选择以下对应的步骤。
升级内核版本
登录ECS实例,具体操作,请参见连接方式概述。
执行以下命令,确认系统内核版本适用此方案。
uname -r
系统显示类似如下。
5.10.60-9.al8.x86_64
对于5.10.60-9.al8.x86_64之前的版本,执行以下命令,将操作系统版本更新至最新的内核版本。
yum update kernel
说明说明:
或者您也可以将操作系统版本,回退至上个版本。
如果您使用的是最新的操作系统版本,若遇到了该问题,请执行安装内核热补丁步骤。
更新内核版本之后,需重启生效,请执行以下命令,重启服务器。
reboot
安装内核热补丁
执行以下命令,确认系统内核版本适用此方案。
uname -r
系统显示类似如下。
5.10.60-9.al8.x86_64
对于5.10.60-9.al8.x86_64版本,执行以下命令,安装内核热补丁。
yum install -y kernel-hotfix-6972801-`uname -r | awk -F"-" '{print $NF}'`
更新内核热补丁之后,需重启才能清除错误状态,请执行以下命令,重启服务器。
reboot
方法二:避免两层配置cpu.cfs_quota_ns
避免两层及两层以上的Cgroup同时配置cpu.cfs_quota_ns。
适用于
云服务器ECS