Help Center/ Cloud Container Engine/ FAQs/ Node/ OSs/ What Should I Do If a VM Is Suspended Due to an EulerOS 2.9 Kernel Defect?
Updated on 2024-09-04 GMT+08:00

What Should I Do If a VM Is Suspended Due to an EulerOS 2.9 Kernel Defect?

Symptom

There is a small chance of a deadlock occurring on an EulerOS 2.9 node, which is caused by community issues related to scheduling in the kernel. This can lead to the suspension of the VM.

Impact

  • x86 kernel version: 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64
  • Arm kernel version: 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64

Possible Causes

The scheduling in the EulerOS 4.18 kernel has issues related to CPU cgroup usage. When CFS bandwidth control is configured and CPU bandwidth control is triggered, it may result in warn-level alarms being generated. This process holds the rq lock for scheduling. This can cause a deadlock with other processes. Specifically, an ABBA deadlock may occur in x86_64 and an AA deadlock in aarch64.

Solution

You can change the value of kernel.printk in the configuration file to rectify the fault. The kernel.printk parameter controls how kernel log information is exported and the output level.

  1. Check the current configurations of kernel.printk in the configuration file.

    grep "kernel.printk" /etc/sysctl.conf

    In the command output, the value of kernel.printk is 7 4 1 7.

  2. Delete the kernel.printk configuration.

    sed -i '/^kernel.printk/d' /etc/sysctl.conf

  3. Run the following command to check whether the configuration file is modified.

    No command output is displayed.

    grep "kernel.printk" /etc/sysctl.conf

  4. Reconfigure kernel.printk.

    x86_64 version:
    1. Run the following command:
      sysctl -w kernel.printk="4 4 1 7"

    2. Run the following command to check whether the modification is successful:
      sysctl -a | grep kernel.printk

      Ensure that the value of kernel.printk is 4 4 1 7.

    Arm version:
    1. Run the following command:
      sysctl -w kernel.printk="1 4 1 7"

    2. Run the following command to check whether the modification is successful:
      sysctl -a | grep kernel.printk

      Ensure that the value of kernel.printk is 1 4 1 7.