性能シミュレーションの活用によって、以下のようなことが可能になります(図3)。
(1)構築初期フェイズでサーバサイジングや性能仕様策定
(2)後期テストフェイズで本番性能を予測
(3)運用・保守フェイズで各種の変更影響を予測
私が実際に使用してみて、シミュレーション技法による性能見積もりは、ITシステム構築の現場での性能問題を解決するために有益な技術だと感じています。
しかし、適切な入力データを用意する必要があるなど、適用上の敷居の高さが課題です。実績となる事例データを積み上げるためには、実測定データが使えるシステム構築後半での適用事例を多く経験するのがいいと思います。
次に、システム構築プロジェクトにおけるシステムテストフェイズで、負荷テストツールを用いた高負荷性能テストと並行して、性能シミュレーションを活用する場合の適用方法について述べます。
このような状況では、高負荷性能テストでは検証を実施しきれないケースでの性能特性を確認するために、性能シミュレーション技法を利用します。“高負荷性能テストでは実施できないケース”には、具体的には以下のようなものがあります。
(a)想定を超える負荷が発生したときの状況(特に、ツールで発生可能な上限よりも多い負荷の場合)。
(b)負荷の掛かり方のパターン(トランザクションの種類ごとの割合など)を、さまざまに変えてみたときの状況。
(c)サーバの台数やサーバ資源(CPUなど)を増設した場合のスループットや応答時間の改善度合い。
これらのケースでシミュレーションを利用する場合でも、測定可能なものについては、可能な限り測定データを使ってシミュレーションを行います。
しかし、それでもなお、シミュレーション結果はある程度の誤差を伴っているはずです。シミュレーション結果から有意な結論を導くためには、想定される誤差をどう見るかも重要な要素となります。つまり、結果を100%真に受けるのではなくて、ある程度は“割り引いて”利用したほうがよいでしょう。
最後に、性能シミュレーション技法を活用する際に留意しておくほうがいい事柄を、いくつか述べておきます。
ここで実施するのはあくまでもシミュレーションです。当然ですが、実際に起こっていることを測定しているわけではありません。したがって、シミュレーションの結果と100%同じことが起こると信じるには無理があります。
これも当然ですが、シミュレーション結果は入力データを反映したものになります。入力データは誤差を含んだものですし、その他のシミュレーション条件も現実を反映できている部分(例えばCPU性能値など)と、仮説や推定値に頼らざるを得ない部分(例えばストレージへのI/Oデータ量など)があるでしょう。現実の事象を測定している部分もありますが、それでもなお測定誤差を含んでいます。
性能シミュレーション技法の目標は、前述のような、システムテストフェイズにおける負荷テストの補完的な使い方には留まりません。ITシステムが完成する前の、もしくは構築を始める前での性能見積もりや、サーバなどのサイジング、アプリケーションプログラムに対する性能仕様設定にも適用することが望まれますし、むしろそれらへの適用が本来の目的ともいえます。
しかし、いかに高度なツールを使用したとしても、まだでき上がってもいないITシステムの性能を評価することは、一朝一夕に可能になるものではありません。システム構築プロセスの最終段階(システムテスト)にこの技法を適用することは、初期フェイズでの性能評価を可能にするための最初のステップになります。
今回は、性能シミュレーションという手法自体の説明を行いました。次回は、具体的な適用事例について紹介します。首尾よくできた部分もできなかった部分もあり、それらを正直に紹介にして、この業界の皆さんに性能対策力を高めてもらうための教材にしていただきたいと思います。
TIS株式会社 先端技術センター
溝口則行(みぞぐち のりゆき)
かつて高トラフィックなインターネットサイトの構築・運用に関わったことがきっかけで、性能問題に真面目に取り組む必要性を痛感する。以来、同業のSI'erとの研究会にてITシステムの性能や可用性の検証活動に取り組んでいるが、活動後のビールが楽しみで続けている。勤務先ではオープンソースソフトウェアの活用を推進。TIS先端技術センターでは、採れたての検証成果や知見などをWebサイト http://TECH-SKETCH.jp/ でも発信中。
Copyright © ITmedia, Inc. All Rights Reserved.