CPUバースト機能を使用すると、CPUスロットリングされたコンテナーはCPU使用率をバーストして、コンテナーのパフォーマンスを向上させ、システムレイテンシを短縮できます。 カーネルバージョン4.19.91-22.al7
から始まるAlibaba Cloud Linux 2およびAlibaba Cloud Linux 3は、cgroup v1のCPUバースト機能を提供します。 このトピックでは、cgroup v1のCPUバースト機能を有効にする方法と、CPUバースト統計を照会する方法について説明します。
CPUバースト機能の詳細については、「迷惑なCPUスロットリングの終了」をご参照ください。
CPUバースト機能の有効化
cgroup v1でCPUバースト機能がグローバルに有効になっているかどうかを確認するには、次のコマンドを実行します。
cat /proc/sys/kernel/sched_cfs_bw_burst_enabled
コマンド出力についての説明:
CPUバースト機能がグローバルに有効になっている場合、
1
が返されます。説明デフォルトでは、CPUバースト機能はcgroup v1に対してグローバルに有効になります。
CPUバースト機能がグローバルに無効になっている場合、
1
以外の値が返されます。cgroup v1のCPUバースト機能をグローバルに有効にするには、次のコマンドを実行します。
sudo sh -c 'echo 1 > /proc/sys/kernel/sched_cfs_bw_burst_enabled'
特定の子cgroupのCPUバースト機能を有効にします。
説明デフォルトでは、cgroup v1のすべての子cgroupに対してCPUバースト機能が無効になっています。
子cgroupのパスに移動し、CFS帯域幅コントローラが有効かどうかを確認するには、次のコマンドを実行します。
<cgroup>
を子cgroupのディレクトリに置き換えます。cd /sys/fs/cgroup/cpu/<cgroup>/ cat cpu.cfs_period_us cat cpu.cfs_quota_us
CFS帯域幅コントローラが有効になった場合、コマンド出力で
cat cpu.cfs_quota_us
に対して正の整数が返されます。 この場合、CPUバースト機能を有効にして、コンテナーが指定された制限を超えてCPUリソースを利用できるようにすることができます。デフォルトのCPUバースト設定を表示するには、次のコマンドを実行します。
cat cpu.cfs_burst_us
CPUバースト機能が無効になっている場合、コマンド出力でデフォルト値
0
が返されます。cpuバースト機能を有効にするには、
CPU. cfs_burst_us
を設定します。cpuバースト機能を有効にするには、CPU. cfs_burst_usを正の整数に設定し、この整数をCPUバースト制限として使用できます。 次の操作では、CPUバースト機能を有効にする方法の例を示します。
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
sudo sh -c 'echo 400000 > cpu.cfs_quota_us' sudo sh -c 'echo 100000 > cpu.cfs_period_us'
cpuバースト機能を有効にするには、
CPU. cfs_burst_us
を設定します。次のコマンドを実行してcpu.cfs_burst_usを600 msに設定し、CPUバースト機能を有効にし、各子cgroupがCPU制限を超える最大6つのCPUリソースを利用できるようにします。 この値は、次の式を使用して計算されます。
cpu.cfs_burst_us
/cpu.cfs_period_us
。sudo sh -c 'echo 600000 > cpu.cfs_burst_us'
CPUバースト統計のクエリ
子cgroupのパスに移動し、CPUバースト統計を表示するには、次のコマンドを実行します。
<cgroup>
を子cgroupのディレクトリに置き換えます。
cd /sys/fs/cgroup/cpu/<cgroup>/
cat cpu.stat
コマンド出力のパラメータ:
nr_burst
: 子cgroupによってトリガーされたCPUバーストの数。burst_time
: 子cgroupのCPUバースト時間の累積長さ。