シングルコアマシンに3つのプロセスがあります。各プロセスはまったく同じであり、CPUを可能な限り高速で焼き付けます(タイトループ)。それらのうちの2つ(A
およびB
)は、共有を512および512に設定したcgexecで個別のグループで起動されます。3番目(C
)は、cgexecではなく定期的に起動されます。
すべてが稼働するとC
、CPUの66%を取得しA
、B
33%を分割します。殺してC
、それぞれ50%A
をB
得ると(予想どおり)。
なぜC
66%を獲得するのですか?このシナリオではそれぞれ33%、または50%(C)、25%(A)、25%(B)を期待していました。C
しかし、66%が私が数学をどのように実行してもうまくいきません。
一般に、リソース共有(特にCPUですが、あまり複雑ではない場合はより一般的な答えがありcgexec
ます)で起動されるプロセスと対話せずに起動されるプロセスを理解したいと思いcgexec
ます。
まず、CPU使用率をどのように測定しますか?A、B、Cを実行する優先順位は何ですか?
—
-KWubbufetowicz
私はCPU使用率を測定し
—
ミカゾルトゥ16
top
ていたと信じており、それらはコマンドプロンプトからかなり簡単に開始されたと信じています:cgexec -g cpu:foo myprogram
と./myprogram
。しばらく経ちましたので、確実に覚えていません。
myprogramが複数のスレッド/ processを使用する場合がありますか?ところで、あなたはまだこの問題を解決することに興味がありますか?
—
-KWubbufetowicz
このプログラムは、この動作をテストするためだけに作成されたテストアプリケーションです。結果を絞り込むために意図的にシングルスレッド化されました。私はまだこの質問に対する答えに興味があります。
—
ミカゾルトゥ16
—
ワイルドカード