全部產品
Search
文件中心

Alibaba Cloud Linux:在cgroup v1介面開啟CPU Burst功能

更新時間:Nov 06, 2024

CPU Burst功能允許容器被CPU限流時,能夠突發性地使用一定量的CPU資源,從而提升容器效能並降低系統的延遲指標。因此,Alibaba Cloud Linux 2(核心版本4.19.91-22.al7開始)和Alibaba Cloud Linux 3為cgroup v1介面提供了CPU Burst功能。本文介紹如何在cgroup v1介面開啟CPU Burst功能,以及如何查詢CPU Burst的統計資料。

說明

關於CPU Burst的詳細資料,請參見Kill the Annoying CPU Throttling

開啟CPU Burst功能

  1. 檢查cgroup v1介面中的CPU Burst功能的全域開關是否已開啟。

    cat /proc/sys/kernel/sched_cfs_bw_burst_enabled

    返回結果說明:

    • 如果返回結果為1,則表示CPU Burst功能的全域開關已開啟。

      說明

      預設情況下,cgroup v1介面中的CPU Burst功能的全域開關為開啟狀態。

    • 如果返回結果不為1,則表示CPU Burst功能的全域開關已關閉。

      運行以下命令,開啟全域開關。

      sudo sh -c 'echo 1 > /proc/sys/kernel/sched_cfs_bw_burst_enabled'
  2. 在具體的子cgroup中開啟CPU Burst功能。

    說明

    預設情況下,cgroup v1介面中的CPU Burst功能在各個子cgroup中均未開啟。

    1. 進入子cgroup路徑下,檢查CFS Bandwidth Controller限流是否處於生效狀態。

      <cgroup>需替換為子cgroup目錄名稱。

      cd /sys/fs/cgroup/cpu/<cgroup>/
      cat cpu.cfs_period_us
      cat cpu.cfs_quota_us

      cat cpu.cfs_quota_us結果為正整數,則表示CFS Bandwidth Controller限流處於生效狀態,進而在啟用CPU Burst功能後,容器才可以獲得超出CPU限流的CPU資源。

    2. 檢查當前預設的CPU Burst設定。

      cat cpu.cfs_burst_us

      返回結果的預設值為0,表示CPU Burst功能未開啟。

    3. 設定cpu.cfs_burst_us的值以開啟CPU Burst功能。

      您可以設定一個適用的正整數啟用CPU Burst功能,且這個正整數表示子cgroup突發額外使用的CPU資源的上限。本文通過以下樣本情境,介紹如何開啟CPU Burst功能。

      1. 配置CFS Bandwidth Controller頻寬控制器預設的cpu.cfs_quota_uscpu.cfs_period_us

        以下配置,將CPU資源的使用周期(cpu.cfs_period_us)設定為100ms,每個周期中的CPU限流(cpu.cfs_quota_us)設定為400ms,則子cgroup將會持續獲得4個CPU資源(cpu.cfs_quota_us/cpu.cfs_period_us)。

        sudo sh -c 'echo 400000 > cpu.cfs_quota_us'
        sudo sh -c 'echo 100000 > cpu.cfs_period_us'
      2. 配置cpu.cfs_burst_us以開啟CPU Burst功能。

        以下配置,將CPU Burst的值設定為600ms,表示開啟了CPU Burst功能,且允許子cgroup可以突發額外使用最多6個CPU資源(cpu.cfs_burst_us/cpu.cfs_period_us)。

        sudo sh -c 'echo 600000 > cpu.cfs_burst_us'

查詢CPU Burst的統計資料

進入待查詢資料的子cgroup路徑下,查看統計資料。

<cgroup>需替換為子cgroup目錄名稱。

cd /sys/fs/cgroup/cpu/<cgroup>/
cat cpu.stat

返回結果中,主要的資訊說明如下:

  • nr_burst資料:當前子cgroup觸發CPU Burst的次數。

  • burst_time資料:當前子cgroup突發使用CPU資源的時間。