実機では測定できない性能を測定?〜性能シミュレーションの概要〜:性能エンジニアリング入門(5)(2/2 ページ)
ピーク時になると応答時間が急激に悪化したので、とりあえずCPUとメモリを倍増しておけば大丈夫かな……と勘に頼って対応し、ドツボにはまった経験、ありませんか? この連載では、インフラエンジニアなら最低限理解しておきたい性能問題の基礎を解説します。(編集部)
性能シミュレーションの適用ケースと効果
適用ケース
性能シミュレーションの活用によって、以下のようなことが可能になります(図3)。
(1)構築初期フェイズでサーバサイジングや性能仕様策定
- 性能特性が酷似した過去事例のデータを利用して新システムの性能結果を予測する。
- サーバなどの資源量を変えながらシミュレーションし、性能要件を満たしながら、余剰でないサーバ構成を求める。
- 構築するITシステムがどの程度のワークロード(負荷量)まで耐えられるかを予測する。
- これから構築しようとするアプリケーションの各コンポーネントに対して、それぞれがどの程度の単体性能になればよいかの性能仕様または性能指針を提示する。
(2)後期テストフェイズで本番性能を予測
- 製造中のソフトウェアコンポーネントの単体性能測定値から、本番環境での高負荷時の性能値を求める。
- 負荷テストでは実現しきれない状況を予測する(詳細は後述します)。
(3)運用・保守フェイズで各種の変更影響を予測
- 将来の負荷量変動に対する結果予測と、リソース増強計画の検証。
- 保守作業による性能影響の予測。
私が実際に使用してみて、シミュレーション技法による性能見積もりは、ITシステム構築の現場での性能問題を解決するために有益な技術だと感じています。
しかし、適切な入力データを用意する必要があるなど、適用上の敷居の高さが課題です。実績となる事例データを積み上げるためには、実測定データが使えるシステム構築後半での適用事例を多く経験するのがいいと思います。
負荷テストの補完的実施ケース
次に、システム構築プロジェクトにおけるシステムテストフェイズで、負荷テストツールを用いた高負荷性能テストと並行して、性能シミュレーションを活用する場合の適用方法について述べます。
このような状況では、高負荷性能テストでは検証を実施しきれないケースでの性能特性を確認するために、性能シミュレーション技法を利用します。“高負荷性能テストでは実施できないケース”には、具体的には以下のようなものがあります。
(a)想定を超える負荷が発生したときの状況(特に、ツールで発生可能な上限よりも多い負荷の場合)。
(b)負荷の掛かり方のパターン(トランザクションの種類ごとの割合など)を、さまざまに変えてみたときの状況。
(c)サーバの台数やサーバ資源(CPUなど)を増設した場合のスループットや応答時間の改善度合い。
これらのケースでシミュレーションを利用する場合でも、測定可能なものについては、可能な限り測定データを使ってシミュレーションを行います。
しかし、それでもなお、シミュレーション結果はある程度の誤差を伴っているはずです。シミュレーション結果から有意な結論を導くためには、想定される誤差をどう見るかも重要な要素となります。つまり、結果を100%真に受けるのではなくて、ある程度は“割り引いて”利用したほうがよいでしょう。
手法と結果を利用する際の留意点
最後に、性能シミュレーション技法を活用する際に留意しておくほうがいい事柄を、いくつか述べておきます。
シミュレーションの精度は100%ではない
ここで実施するのはあくまでもシミュレーションです。当然ですが、実際に起こっていることを測定しているわけではありません。したがって、シミュレーションの結果と100%同じことが起こると信じるには無理があります。
これも当然ですが、シミュレーション結果は入力データを反映したものになります。入力データは誤差を含んだものですし、その他のシミュレーション条件も現実を反映できている部分(例えばCPU性能値など)と、仮説や推定値に頼らざるを得ない部分(例えばストレージへのI/Oデータ量など)があるでしょう。現実の事象を測定している部分もありますが、それでもなお測定誤差を含んでいます。
上流工程への適用も視野に
性能シミュレーション技法の目標は、前述のような、システムテストフェイズにおける負荷テストの補完的な使い方には留まりません。ITシステムが完成する前の、もしくは構築を始める前での性能見積もりや、サーバなどのサイジング、アプリケーションプログラムに対する性能仕様設定にも適用することが望まれますし、むしろそれらへの適用が本来の目的ともいえます。
しかし、いかに高度なツールを使用したとしても、まだでき上がってもいないITシステムの性能を評価することは、一朝一夕に可能になるものではありません。システム構築プロセスの最終段階(システムテスト)にこの技法を適用することは、初期フェイズでの性能評価を可能にするための最初のステップになります。
今回は、性能シミュレーションという手法自体の説明を行いました。次回は、具体的な適用事例について紹介します。首尾よくできた部分もできなかった部分もあり、それらを正直に紹介にして、この業界の皆さんに性能対策力を高めてもらうための教材にしていただきたいと思います。
参考情報
- VizJournal ― トピックス(ITシステムの未来を可視化する HyPerformix IPS)
http://kgt.cybernet.co.jp/viz-journal/contents/ver1/topics/hypx.html - NEC,研究者が語る先進技術への取り組み,第15回 「システムの性能測定方法」
http://www.nec.co.jp/effort/sch/2005_0225_3/index.html
著者プロフィール
TIS株式会社 先端技術センター
溝口則行(みぞぐち のりゆき)
かつて高トラフィックなインターネットサイトの構築・運用に関わったことがきっかけで、性能問題に真面目に取り組む必要性を痛感する。以来、同業のSI'erとの研究会にてITシステムの性能や可用性の検証活動に取り組んでいるが、活動後のビールが楽しみで続けている。勤務先ではオープンソースソフトウェアの活用を推進。TIS先端技術センターでは、採れたての検証成果や知見などをWebサイト http://TECH-SKETCH.jp/ でも発信中。
Copyright © ITmedia, Inc. All Rights Reserved.