• 和记官网登录

    服务支持

    系统更新

    当前位置  >  首页  >  服务支持  >  系统更新

    更新ID(KYBA-202201-1011

    更新简述:
    在arm64平台上,将虚拟机vCPU(多核)进程的CPU使用率限制为100%时,部分vCPU实际无法达到100%。
    影响操作系统版本:
    银河和记官网登录高级服务器操作系统(飞腾版)V10(SP1)0518 银河和记官网登录高级服务器操作系统(鲲鹏版)V10(SP1)0518 银河和记官网登录高级服务器操作系统(飞腾版)V10(SP2)0524 银河和记官网登录高级服务器操作系统(鲲鹏版)V10(SP2)0524
    更新类型:
    问题修复
    发布时间:
    2021-12-28
    更新描述:

    详细介绍

    1.详细描述

    在arm64平台上,通过libvirt设置虚拟机CPU的占用率限额时,存在以下问题:

    1.将虚拟机配置单核,并将CPU占用率限额(即cpu.cfs_quota_us)配置为100000(限制为100%)时,观察虚拟机vCPU线程的物理机CPU占用率,实际可达到100%;

    2.将虚拟机配置为4核,并将每个核的限额均设置为100%时,实际总占用率只能达到350%左右,无法达到400%。另外,若将限额设置200000(限制为200%)或-1(无限制)时,总占用率可达到400%。


    2.复现步骤

    1.在宿主机的/sys/fs/cgroup/cpu,cpuacct/目录下新建一个目录test

    cd test

    mkdir t1 t2 t3 t4

    echo 100000 >t1/cpu.cfs_quota_us

    echo 100000 >t2/cpu.cfs_quota_us

    echo 100000 >t3/cpu.cfs_quota_us

    echo 100000 >t4/cpu.cfs_quota_us

    2.编写测试程序,内容如下:

    #include

    #include

     

    void cpu100(void)

    {

        while(1);

    }

     

    void main(void)

    {

        pthread_t tid;

     

        pthread_create(&tid,NULL,cpu100,NULL);

        pthread_create(&tid,NULL,cpu100,NULL);

        pthread_create(&tid,NULL,cpu100,NULL);

        pthread_create(&tid,NULL,cpu100,NULL);

        sleep(10000000);

    }

    3.编译上述程序并运行;

    4.找到该程序的PID,通过top -Hp

    ,查询其4个CPU占用率为100%的子线程的PID;

    5.将4个子线程的PID分别写入步骤1中test文件夹下的的t1/tasks, t2/tasks, t3/tasks, t4/tasks文件中;

    6.继续观察top命令的输出信息,可发现有一个子线程的CPU占用率明显下降,如下图:

    undefined


    3.原因简述

    该问题由cgroup和完全公平调度器(CFS)的时间片分配逻辑中存在竞争窗口导致。


    4.解决方案/修复/更新方法

    在调度实体受限时,及时将其记录到受限队列中,以便函数distribute_cfs_runtime()在分发时间片时,可以发现该调度实体,并为其分配新的时间片额度。

    目前,社区已在v5.8-rc1版本中修复了该问题,相关补丁为“sched/fair: Eliminate bandwidth race between throttling and distribution“,将该补丁进行移植即可解决问题。


    上一篇: KYBA-202201-1010 下一篇: KYBA-202201-1012

    试用

    服务

    动态

    联系