性能評価・プロファイリング

プログラムが遅いのに、CPUの使用率が20%程度と低かった。最も考えられる原因はどれか。

  1. ACPUの計算が速すぎる
  2. Bプログラムの命令の数が少なすぎる
  3. Cディスクやネットワークの入出力の待ちや、ロックの待ちなどで、CPUを使わずに待っている時間が長い
答えと解説を見る

正解:C. ディスクやネットワークの入出力の待ちや、ロックの待ちなどで、CPUを使わずに待っている時間が長い

CPUの使用率が低いのにプログラムが遅いなら、時間の大部分はCPUの外の何かを待っていると考えられます。ディスクの読み書き、ネットワークの応答、ほかのスレッドが持つロックの解放などです。この場合、CPUを速くしても、計算のコードを最適化しても効果はほとんどありません。入出力をまとめる、非同期にして待ちの間にほかの処理を進める、ロックの範囲を小さくする、などが有効です。

  • A. 速すぎることが遅さの原因にはなりません。
  • B. 命令が少ないことは遅さの原因になりません。
  • C. 正しい。CPUを速くしても解決しません。
この分野を解く 分野ページへ

性能評価・プロファイリングのほかの問題

  1. あるプログラムが計算律速かメモリ律速かを確かめる方法として、CPUの周波数を変えて実行時間を測った。メモリ律速なら一般にどのような結果になるか。
  2. Rooflineモデルで、ある処理がメモリ帯域で制限される領域にあると分かったとき、性能を上げる方向として正しいものはどれか。
  3. STREAMベンチマークで主に測るものはどれか。
  4. 並列プログラムのスケーラビリティを調べるときの方法として最も適切なものはどれか。
  5. 8コアで並列に実行したところ、1コアのときより6倍速くなった。並列効率はいくらか。