- 不適切な処理ロジックによるボトルネック
- 排他処理によるボトルネック
後者は、マルチスレッドで動作するソフトウェアにおいて、ハードウェアまたはソフトウェアによる排他処理の影響で、処理待ちが発生し、CPUパワーを十分に活用できないケースです。“アムダールの法則の紹介”に記載したアムダールの法則を使って、排他率(並列処理ができない部分の割合)を求めればよいかと思います。算出した排他率を見てソフトウェアの修正が必要かどうかを判断します。
どちらのボトルネックにしても、ボトルネック箇所を正確に見極めるのが難しい場合が多いですね。経験豊かな開発者なら経験に裏付けられたカンでボトルネック箇所をある程度絞れますが、どの箇所でどのくらいの性能劣化が起きているのかを知りたいこともあります。
Javaアプリケーションでボトルネック箇所を特定する市販製品が結構出回っていますが、Java SE 5.0以降なら市販製品を使わずにボトルネック箇所を特定するツールを比較的簡単に自作できます。後日、簡単にご紹介したいと思います。
0 件のコメント:
コメントを投稿