cpu.cpu_quota_us
cgroupサブシステムの設定がアプリケーションのパフォーマンスに影響するかどうかを理解したいと思います。cpu
デフォルトでは、CPUクォータは減少しますが、「有効な」CPUは依然として同じになるようにCPUの数を増やす必要があります。これはアプリケーションに影響しますか?たとえば、4つのCPU 100%クォータ設定は、8つのCPU 50%クォータ設定と同じですか?
私はこれがアプリケーション設計とCPUかIOバインディングに大きく依存することを知っています。ここでは、CPU集約的なアプリケーションにのみ興味を持っています。
私の努力:
ここで見つけることができる簡単なCアプリケーションを作成しました。https://github.com/ashu-mehra/cpu-quota-test。
プログラムは「N」個のスレッドを生成する。各スレッドは、数字「n」から1000000までの素数計算を開始します。開始番号「n」はスレッドごとに異なります。 100個の素数を計算した後、スレッドは一定時間省電力モードになります。スレッドが1,000,000個に達したら、2から再開します。最後に、メインスレッドは、各スレッドによって計算された少数の累積数を表示します。私はこれがこのサンプルアプリケーションの「処理量」だと思います。
次の構成でプログラムを実行しています。
- CPUが4つ、クォータ制限がないcgroupから。
- CPUが8個、クォータが50%のcgroupから。
/sys/devices/system/cpu/cpu/online`を0に設定してハイパースレッディングを無効にしました。
各構成では、スレッド数を4から32に変更しました。以下は、サンプルプログラムによって生成された「処理量」の結果です。数字は10回の繰り返しの平均です。
スレッドCPU4quota100 CPU8quota50 4 66229.5 66079.4 8 128129 129768 16 189247 134882 24 188238 98917.8 32 176236 87252.5
スレッド16から開始すると、2つのケース間のスループットに大きな差がある。 「cpu8quota50」ケースのスループットは、24スレッドと32スレッドから大幅に低下します。
私もperf stat
これらの実行の結果を持っています。私はcpu-migrations
2つの構成perf
の間に大きな違いを見つけました。これは比較です
スレッドCPU4quota100 CPU8quota50 4 9.6 11.2 8 3252.2 37.9 16 2956.2 4490.5 24472.6 2347 32118.3 1727.2
スレッド4、8、16の数字は意味がありますが、「cpu4quota100」のケースでは、スレッド24と32の数字は理解できません。スレッド16の場合よりはるかに小さいからです。
誰かがこの結果を説明できますか?また、「CPUの移行」がアプリケーションのパフォーマンスに影響しますか?
文が長くなってすみません!
編集1:
上記のサンプルプログラムを実行するスクリプトを更新して、time
「cpu4quota100」と「cpu8quota50」のケースの間に違いがあるかどうかを確認するために、コマンドを使用して実行時間を決定しました。 32個のスレッドのみを実行しましたが、結果は次のとおりです。
時間CPU4quota100 CPU8quota50 ユーザー 119.956秒 120.076秒 システム0.001秒0.009秒 CPU 386.2% 386.5%
user
したがって、2つのケースの時間とタイミングの違いはそれほど大きくはありませんが、sys
「処理量」はcpu4quota100
2倍高いですcpu8quota50
。
編集2:
CPU周波数を変更するカーネルガバナーは、cpu8quota50
ケーススループットの向上に役立つようです。初期データは周波数調整器「省電力」を用いて得た。 「省電力」条件では、コアのCPU周波数はcpu4quota100
最大値に達しますが、cpu8quota50
実際にははるかに低いです。ただし、周波数レギュレータを「パフォーマンス」に変更した後cpu8quota50
、その場合はCPU周波数も最大値に近づきました。 「パフォーマンス」を周波数ガバナーとして実行する32スレッドの場合は、次の数字を取得します。
スレッドCPU4quota100 CPU8quota50 32 175804 163831
その結果、その差は現在、ほぼ50%から6.8%に減少しました。
しかし、上記の2つのケースでは、「スリープ」レギュレータの動作に違いがあることは興味深いです。cpu8quota50
もし予想通りに動作するのか分からない。