5

cpuset を 1 コアに指定して、1 つの Docker コンテナーを開始しました。

docker run --cpuset-cpus="0"...

cpuset を 4 コアに指定して 2 つ目:

docker run --cpuset-cpus="0-3"...

各コンテナー内でロード プロセスを開始し、両方のコンテナーの CPU 消費量を監視しました。

ロード プロセスは次のようになります。

ffmpeg input > output

私は、両方のコンテナ間の実行時間に関して改善がないことを観察しました (スピードアップなし)。

改善されない理由がわかりませんか?4 コアのコンテナーは、1 コア コンテナーよりも高速に実行する必要があります。

注意: 1core コンテナーに top を使用する

CPU0%=100%
CPU1%=0
CPU2%=0
CPU3%=0

4core コンテナーに top を使用すると、docker は 4 つのコアのいずれかをランダムに選択してプロセスを起動します。場合によってはコアごとに 30% 影響します

CPU0%=0                  CPU0%=30%                   CPU0%=0
CPU1%=100%       or      CPU0%=30%            or     CPU0%=0
CPU2%=0                  CPU0%=30%                   CPU0%=0
CPU3%=0                  CPU0%=30%                   CPU0%=100%
4

1 に答える 1

6

gzip複数のコアが利用可能であっても使用しません。その結果、このプログラムは、CPU コアの使用に関するパフォーマンス テストを行うのには適していません。

代わりにpzipを使用してください。tar+gzip/bzip 圧縮/解凍にマルチコアを利用するを参照してください。

また、Linux サーバーで高い CPU 負荷を生成するにはどうすればよいですか?も参照してください。


このstressツールはすでに Docker Hub で利用できるので、次のコマンドを実行して docker--cpuset-cpusオプションが正しく機能していることを確認できます。

docker run --rm -it --cpuset-cpus="0-3" jess/stress --cpu 4

→ 4 つのコアすべてが 100% の使用率になることがわかります。

次に、次を実行します。

docker run --rm -it --cpuset-cpus="0-1" jess/stress --cpu 4

→ 2 つのコアだけが 100% 使用されることがわかります。

于 2015-07-29T14:03:04.177 に答える