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

マルチコアやNUMAのシステムで性能を測るとき、スレッドを特定のコアに固定する(アフィニティを設定する)ことがある理由として正しいものはどれか。

  1. AOSがスレッドをコアの間で移動させると、キャッシュの内容が失われたり遠いメモリを使ったりして、結果がばらつくから
  2. B固定すると、コアの数が2倍になるから
  3. C固定しないと、プログラムが実行できないから
答えと解説を見る

正解:A. OSがスレッドをコアの間で移動させると、キャッシュの内容が失われたり遠いメモリを使ったりして、結果がばらつくから

OSは負荷を分散するために、スレッドを別のコアへ移すことがあります。移った先のコアのキャッシュには必要なデータがなく、NUMAのシステムでは、データが置かれたメモリから遠いソケットに移ってしまうこともあります。そのため、同じプログラムでも、どのコアで動いたかによって時間が変わります。スレッドをコアに固定し、メモリの置き場所もそろえると、測定の再現性が高まります。

  • A. 正しい。測定の条件をそろえるための工夫です。
  • B. コアの数は変わりません。
  • C. 固定しなくても実行はできます。
この分野を解く 分野ページへ

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

  1. GPUを使うプログラムの性能を分析するとき、最初に確かめるべきこととして最も適切なものはどれか。
  2. データセンターでサーバを選ぶとき、ピークの性能だけでなく考えるべき観点として当てはまらないものはどれか。
  3. 「新しい方法で100倍速くなった」という主張を評価するときに確かめるべき点として最も適切なものはどれか。
  4. SSDの性能を、連続の読み出しの帯域(MB/s)だけでなく、4 KBのランダムな読み出しのIOPS(1秒あたりの入出力の回数)でも示すことが多い理由として正しいものはどれか。
  5. 配列の大きさを少しずつ大きくしながら、配列を繰り返し読む処理の1要素あたりの時間を測ると、ある大きさごとに時間が段階的に増える。その理由として正しいものはどれか。