LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問16
性能・拡張性の設計/性能見積もりと評価1件の集計処理を1コアで実行すると100分かかる。プロファイルの結果、処理時間のうち20%は並列化できない逐次処理で、残りの80%はコア数に応じて均等に分割できることが分かった。この処理を8コアのサーバーで並列化した場合の処理時間の見積もりとして適切なものはどれか。なお、並列化に伴う通信や同期のオーバーヘッドは無視する。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)
- A約12.5分
- B約30分
- C約10分
- D約20分
正解:B
解説
並列化できない部分がある処理の高速化の上限は、アムダールの法則で見積もれます。逐次部分の20分はコア数を増やしても短くならず、並列化できる80分だけが8コアで10分になるため、合計は20分+10分=30分です。速度向上は約3.3倍にとどまり、コアを無限に増やしても逐次部分の20分より短くはならない(最大5倍)ことも分かります。マルチコアのサーバーを選定する際は、アプリケーションの並列化できる割合を測ってからコア数を決めることが重要です。
選択肢ごとの解説
- A誤り。100分を8で割った値で、処理全体が完全に並列化できる場合の見積もりです。逐次部分の20%を考慮していません。
- B正しい。逐次部分20分と、並列部分80分を8コアで分割した10分の合計です。
- C誤り。並列部分80分を8で割った値だけで、並列化できない逐次部分の20分を足していません。
- D誤り。逐次部分の20分だけで、コア数を無限に増やした場合の下限にあたります。8コアでは並列部分の時間が残ります。