1

マルチコア/ハイパースレッドでプロセスにかかる CPU 時間を観察する必要があります。Xeon、Opteronなどを想定してください。

4 つのコア、ハイパー スレッド、つまり 8 つの「仮想」コアがあるとします。私が実行したいプログラムを X とし、それがどれだけの CPU 時間を要したかを観察します。

  • CPU でプロセス X を実行すると、CPU 時間 A が得られます。A が 5 分以上あるとします。

  • 同じプロセス X の 8 つのコピーを実行すると、CPU 時間は B1、B2…、B8 になります。

  • 同じプロセス X の 7 つのコピーを実行すると、CPU 時間は C1、C2…、C7 になります。

  • 同じプロセス X の 4 つのコピーを実行すると、CPU 時間は D1、D2…、D4 になります。

質問:

  1. 数 A、Bi、Ci、Di の関係は何ですか?

  2. A は Bi より小さいですか? いくら?Ci、Diはどうですか?

  3. それらの間でBiの時間は異なりますか?Ci、Diはどうですか?

4

2 に答える 2

1

数 A、Bi、Ci、Di の関係は何ですか?

D1=D2=D3=D4=A*1L2 キャッシュの問題 (競合、障害など) がある場合を除いて、1 ではなくわずかに大きな数になることを期待してください。

期待してくださいB1=B2=B3=B4=...=B8=A*1.3。この数1.31.12アプリケーションによって異なります (特定のプロセッサ サブパーツはハイパースレッド化されていますが、そうでないものもあります)。プライベート フォーラムによると、D=23 秒、A=18 秒という質問の表記法を使用して、同様の統計から計算されました。スレッド化されていないプロセスは、入出力なしで整数計算を行いました。正確なアプリケーションは、動機Steenrodの代数のAdem係数をチェックしていました(それが何であるかはわかりません;設定はn = 20で(2n + e、n)でした)。

7 つのプロセス (Cs) の場合、各プロセスを (Linux では /usr/bin/htop を使用して) コアに割り当てると、実行時間が同じプロセス (たとえば C5) の 1 つになります。 A、およびその他 (私の例では、C1、C2、C3、C4、C6、C7) は、D と同じ値になります。プロセスをコアに割り当てず、OS がコア間でプロセスのバランスをとるのに十分なプロセスが続く場合、プロセスは C の平均値に収束します。

Are times Bi different between them? What about Ci, Di?

OS スケジューラとその構成に依存します。Linux で表示されるパーセンテージ/bin/topはチートです。A、B、C、D でほぼ 100% を示します。

パフォーマンスを評価するには、/usr/bin/nettop (およびバリアントの nethogs、nmon、iftop、iptraf)、iotop (およびバリアントの iostat、latencytop)、collectl (+colmux) および sar (+sag、+sadf) を忘れないでください。 .

于 2013-12-13T12:03:38.080 に答える