3

並列システムでは、すべてのプロセスが他のプロセスに影響を与えます。これは、CPU キャッシュ、メモリ、ディスク I/O、ネットワークなどのいくつかの希少なリソースをすべて競合するためです。

プロセス間の干渉を測定するのに最適な方法は? Process A & B など、それぞれディスクへのアクセスが多くなっています。したがって、それらを並列に実行すると、順次実行するよりもおそらく遅くなります (個々のランタイム)。ボトルネックはハードドライブだからです。

プロセスの動作 (ディスク、メモリ、または CPU を集中的に使用) が正確にわからない場合、それを分析するにはどのような方法が最適でしょうか?

個々の実行時間を測定し、各並列プロセスの相対的なシェアを比較しますか?

プロセス A が平均 30 秒で単独で実行されるように、B と 100% 並列の場合は 45 秒、20% 並列の場合は 35 秒.. など ??

L1 & LLC キャッシュ ミス、ページ フォールトなどのいくつかの指標を比較したほうがよいでしょうか??

4

1 に答える 1

1

あなたがしなければならないことは、まず、個々のプログラムのそれぞれに制限要因が何であるかを判断することです. CPU バウンドと IO バウンドを同時に実行したい場合、影響はほとんどありません。2 つの IO バウンド プロセスを同時に実行したい場合、多くの競合が発生します。

「時間[コマンド]」結果の出力を解釈して、何が制限要因であるかを確認する方法について、かなり詳細な回答を書きました。ここにあります: 経過時間がユーザー時間よりも長くなった原因は何ですか?

プログラムの「時間」からの出力を取得したら、互いに踏む可能性が高いものとそうでないものを判断できます。

于 2012-12-29T23:58:14.473 に答える