• 服務支持

    系統更新

    當前位置  >  首頁  >  服務支持  >  系統更新

    更新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 <pthread.h>

    #include <stdio.h>

     

    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 <pid>,查詢其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

    試用

    服務

    動態

    聯系

    公啊灬啊灬啊灬快灬深用力视频