
# EulerOS 2.9内核缺陷导致虚拟机卡住
#### 故障现象
EulerOS 2.9节点上，由于内核存在调度相关的社区问题，有低概率会触发死锁，表现为虚拟机卡住。
#### 影响范围
- x86内核版本：4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64
- arm内核版本：4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64
 
#### 问题根因
EulerOS 4.18版本内核存在调度相关问题，使用CPU cgroup场景下，设置cfs bandwidth，并触发CPU带宽管控，会概率性触发warn级别告警打印，该流程会持有调度的rq锁，跟其他进程发生死锁（x86_64下为ABBA锁，aarch64下为AA锁）。
#### 解决方法
您可以修改配置文件中的kernel.printk参数值进行修复。kernel.printk参数用于控制内核日志信息的输出级别和方式。
1. 检查配置文件中kernel.printk参数的当前配置。 
   ```
   grep "kernel.printk" /etc/sysctl.conf
   ```
   回显中kernel.printk参数值为"7 4 1 7"，如下：
   ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000001962849773.png "点击放大")
   
   
2. 删除kernel.printk配置。 
   ```
   sed -i '/^kernel.printk/d' /etc/sysctl.conf
   ```
   
   
3. 确认配置文件是否修改成功，执行以下命令无回显。 
   ```
   grep "kernel.printk" /etc/sysctl.conf
   ```
   
   
4. 重新配置kernel.printk参数。 
   **x86_64版本：**
   1. 执行以下命令：
      ```
      sysctl -w kernel.printk="4 4 1 7"
      ```
      ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000001935653338.png "点击放大")
      
   
   2. 检查修改是否成功，执行以下命令：
      ```
      sysctl -a | grep kernel.printk
      ```
      确认kernel.printk参数为"4 4 1 7"。
      ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000001962851061.png "点击放大")
      
    
   **arm版本：**
   1. 执行以下命令：
      ```
      sysctl -w kernel.printk="1 4 1 7"
      ```
      ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000001962732065.png "点击放大")
      
   
   2. 检查修改是否成功，执行以下命令：
      ```
      sysctl -a | grep kernel.printk
      ```
      确认kernel.printk参数为"1 4 1 7"。
      ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000001935812214.png "点击放大")
      
    
   
   
 
