パフォーマンス特性の一致

各コンポーネントのパフォーマンス特性は、全体のシステムパフォーマンスに影響します。多数のサブコンポーネントと、コンポーネント間の相互作用によって、ボトルネックが発生します。プロトコルもボトルネックの原因です。固有のソフトウェア機能もボトルネックの原因です。実際、システムのすべての部分とプロセスが、ボトルネックを引き起こす可能性を持ちます。ただし、常に意識しなければならないのは、システムの最大の弱点であるボトルネックは、一度に1つしか存在しないということです。

また、どのシステムにも、どこかに弱点はあります。このため、システムの1つのコンポーネントが他のコンポーネントのパフォーマンスを妨げることがないように、システムコンポーネントのパフォーマンス特性を一致させることが目標となります。図: 2は、コンポーネントの特性が一致しているシステムを示しています。

図: 2
適切な設計のシステム

適切な設計のシステムでは、すべてのコンポーネントが同じパフォーマンス範囲にあることに注意してください。ただし、この場合、必ずしも最適ではないコンポーネントの方がコスト効率は優れています。コンポーネントの特性がきわめて一致しているので、パフォーマンスが一番低いコンポーネントaをアップグレードしても、そのコストに見合うだけのパフォーマンスの増加は得られません。

図: 3は、パフォーマンスが低いコンポーネントと高いコンポーネントが効率悪く混在している、不適切な設計のシステムを示しています。

図: 3
不適切な設計のシステム

このシステムの場合、コンポーネントfおよびgのパフォーマンス特性は、コンポーネントhi、およびjに比べて相当劣っています。コンポーネントfはボトルネックであり、コンポーネントhij、およびgさえもfの影響を受け、本来設計されている実行速度よりもかなり低速に実行します。このシステムの場合、ボトルネックによってシステムのパフォーマンスが損なわれています。

高パフォーマンスのコンポーネントが本来の能力を発揮することができないために、これは不適切な設計のシステムです。実際、hi、および jのパフォーマンス特性が高いために、このシステムは図: 3のシステムに比べてコストが高くなっています。しかし、高パフォーマンスコンポーネントと低パフォーマンスコンポーネントがあまりに不均衡であるために、その性能を発揮できません。

図: 4の不均衡なシステムは、コンポーネントfgのパフォーマンスレベルにアップグレードすることで、大きく向上します。ただし、次の図に示すようにfgより上のレベルにアップグレードしても、ボトルネックがコンポーネントgに移動するので、fによる追加のパフォーマンス特性は失われます。

図: 4
ボトルネックの移動

このため、アップグレードによる恩恵はわずかです。ボトルネックの移動を超える効果を得るには、hi、およびjの能力を完全に利用するために、両方のコンポーネントをhのレベルまでアップグレードする必要があります。

別のコンポーネントが実際にシステムパフォーマンスのボトルネックになる可能性を考慮せずに、システムのコンポーネントを1つだけ、その能力の限界までテストしても意味はありません。システムコンポーネントをアップグレードすることはできますが、システムのボトルネックを切り離し、システム全体のパフォーマンス特性に対するその関係を評価し、適切な対処をしない限り、パフォーマンスの大きな向上はあり得ません。

ボトルネックの切り離しは、パフォーマンスに優れたシステムを構築している場合、特に重要です。システムのどの部分に、どのような理由でボトルネックが発生しているか理解する必要があります。さらに、そのボトルネックが、システムの他の部分のパフォーマンス特性と、どの程度密接に関係しているかについても知る必要があります。低パフォーマンスのコンポーネントが、他のコンポーネントとは別のパフォーマンスカテゴリにある場合は、アップグレードしてボトルネックを最高のパフォーマンスレベルに移動することで、大きな効果を得ることができます。

この説明は、AppNotesTMの「Performance Analysis: Isolating the Real Bottleneck in a System」(1996年1月)から引用しました。



|