すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:cgroup v1のCPUバースト機能を有効にする

最終更新日:Jul 10, 2024

カーネルバージョン4.19.91-22.al7から始まるAlibaba Cloud Linux 2とAlibaba Cloud Linux 3は、cgroup v1インターフェイスのCPUバースト機能を提供します。 CPUバースト機能により、CPUスロットリングされたコンテナはCPU使用率をバーストして、パフォーマンスを高め、レイテンシを削減できます。 このトピックでは、cgroup v1インターフェイスのCPUバースト機能を有効にする方法と、CPUバースト統計を照会する方法について説明します。

背景情報

コンテナサービスでは、コンテナはカーネルのCFS帯域幅コントローラによってCPUスロットルされます。 cgroup v1インターフェイスのCPUバースト機能を有効にして、コンテナーが指定された制限を超えてCPU使用率をバーストできるようにすることができます。 この機能により、コンテナの展開密度を低下させることなく、コンテナの品質を保証できます。

説明

コンテナのCPUバーストは、コンテナが指定された制限を超えてCPUリソースを利用することを意味します。

CPUバーストの詳細については、Alibaba Cloud Linux 2カーネルのドキュメントをご参照ください。 Alibaba Cloud Linux 2カーネルドキュメントは、Debuginfoパッケージとソースコードパッケージに格納されています。 ドキュメントのパスは、documentation /scheduler/sched-bwc.rstです。 Debuginfoパッケージとソースコードパッケージのダウンロード方法については、「Alibaba Cloud Linux 2の使用」をご参照ください。

CPUバースト機能の仕組み

CPUバースト機能によって割り当てることができるCPUリソースの量は、定期的に発生するCPUリソースに依存します。 たとえば、コンテナーが指定されたCPU制限を下回った場合、アイドル状態のCPUリソースが発生します。 コンテナがより多くのCPUリソースを必要とする場合、CPUバースト機能を使用して、発生したCPUリソースを消費してCPU使用率をバーストします。 CPUバースト機能をよりよく理解するために、次のアナロジーを検討してください。

4日間の年次休暇 (CPUスロットル制限) の権利があるとします。 将来の使用のために、最大4つの未払いの休暇日 (CPUバースト制限) を発生させることができます。 1年目と2年目に毎年1日だけ休む場合、理論的には6日間の休暇をとる権利があります。 3年目には、理論的には10日間の休暇を取る権利があります。 ただし、過去2年間に発生する休暇日数 (CPUバースト制限) は4日のみであり、発生した休暇日数の最大数に制限があるため、実際には3年目に最大8日間の休暇を取ることができます。

CPUバースト機能の有効化

  1. cgroup v1インターフェイスでCPUバースト機能がグローバルに有効になっているかどうかを確認するには、次のコマンドを実行します。

    cat /proc/sys/kernel/sched_cfs_bw_burst_enabled

    コマンド出力についての説明:

    • CPUバースト機能がグローバルに有効になっている場合、1が返されます。

      説明

      デフォルトでは、CPUバースト機能はcgroup v1インターフェイスに対してグローバルに有効になっています。

    • CPUバースト機能がグローバルに無効になっている場合、1以外の値が返されます。 CPUバースト機能をグローバルに有効にするには、次のコマンドを実行します。

      echo 1 > /proc/sys/kernel/sched_cfs_bw_burst_enabled
  2. 子cgroupのCPUバースト機能を有効にします。

    デフォルトでは、cgroup v1インターフェイスのすべての子cgroupに対してCPUバースト機能が無効になっています。 次の操作を実行して、子cgroupのCPUバースト機能を有効にします。

    1. 子cgroupのパスに移動し、CFS帯域幅コントローラが有効かどうかを確認するには、次のコマンドを実行します。

      cd /sys/fs/cgroup/cpu/<Name of the child cgroup directory>/
      cat cpu.cfs_period_us
      cat cpu.cfs_quota_us

      CFS帯域幅コントローラが有効になった場合、コマンド出力でcpu.cfs_quota_usに対して正の整数が返されます。 この場合、CPUバースト機能を有効にして、コンテナーが指定された制限を超えてCPUリソースを利用できるようにすることができます。

    2. デフォルトのCPUバースト設定を確認するには、次のコマンドを実行します。

      cat cpu.cfs_burst_us

      CPUバースト機能が無効になっている場合、コマンド出力でデフォルト値0が返されます。

    3. 設定cpu.cfs_burst_usCPUバースト機能を有効にします。

      cpuバースト機能を有効にするには、CPU. cfs_burst_usを正の整数に設定し、この整数をCPUバースト制限として使用できます。 次の操作では、CPUバースト機能を有効にする方法の例を示します。

      1. CFS帯域幅コントローラーのデフォルトのcpu.cfs_quota_usおよびcpu.cfs_period_usファイルを設定します。

        cpu.cfs_period_usは、CPUリソースが利用される期間の長さを指定します。 cpu.cfs_quota_usは、CPU. cfs_period_usによって指定された各期間中に各子cgroupが利用できるcpuリソースの最大量を指定します。 次のコマンドを実行してcpu.cfs_period_usを100 ms、cpu.cfs_quota_usを400 msに設定し、各子cgroupが引き続き4つのCPUリソースを取得できるようにします。これは、次の式を使用して計算されます。cpu.cfs_quota_us /cpu.cfs_period

        echo 400000 > cpu.cfs_quota_us
        echo 100000 > cpu.cfs_period_us
      2. cpuバースト機能を有効にするには、CPU. cfs_burst_usを設定します。

        次のコマンドを実行してcpu.cfs_burst_usを600 msに設定し、CPUバースト機能を有効にし、各子cgroupがCPU制限を超える最大6つのCPUリソースを利用できるようにします。これは、次の式を使用して計算されます。cpu.cfs_burst_us /cpu.cfs_period_us

        echo 600000 > cpu.cfs_burst_us

CPUバースト統計のクエリ

  1. 子cgroupのパスに移動するには、次のコマンドを実行します。

    cd /sys/fs/cgroup/cpu/<Name of the child cgroup directory>/
  2. CPUバースト統計を表示するには、次のコマンドを実行します。

    cat cpu.stat

    コマンド出力のパラメータ:

    • nr_burst: 子cgroupによってトリガーされたCPUバーストの数。

    • burst_time: 子cgroupのCPUバースト時間の累積長さ。