システムの性能特性と評価

このページでは、性能指標、命令ミックスとベンチマーク、モニタリング、キャパシティプランニング、スケールアウトとスケールアップの違いがわかります。

  • 一言で言うと:
    • システムが「どれくらい速いか」を何で測り、どう評価し、どう見張り、将来に備えてどう増強するか、という話。

何で測るか(性能指標)→ どう評価するか(評価技法)→ 動いているものを見張る(モニタリング)→ 将来に備える(キャパシティプランニング)→ 必要なときだけ増やす(動的な拡張性)

覚え方の軸

  • 性能指標は「量」と「時間」に分ける:
    • 量=スループット、MIPS、FLOPS。時間=レスポンスタイム(最初の結果まで)、ターンアラウンドタイム(全部終わるまで)
  • 評価の道具は「何を走らせるか」で分ける:
    • 命令の出現率で計算(命令ミックス)、標準プログラムを実際に動かす(ベンチマーク)、模型で実験(シミュレーション)
  • ベンチマークは「CPUだけ(SPEC)」か「システム全体(TPC)」か
  • モニタは「ソフトは柔軟だが誤差あり、ハードは正確だが変更しにくい」
  • 増強は「台数を増やす(スケールアウト=水平)」か「1台を強くする(スケールアップ=垂直)」か

システムの性能指標:何で速さを測るか

  • スループット:
    • 単位時間あたりに処理できる仕事量
    • オンライントランザクション処理ではトランザクション数(TPS:Transaction Per Sec)、バッチ処理ではジョブ数
  • レスポンスタイム(応答時間):
    • トランザクション処理や会話型処理の指標。処理要求を出してから、最初の処理結果が返ってくるまでの時間
    • オンラインシステムの業務処理性能を評価するときに特に重要
  • ターンアラウンドタイム(TAT):
    • 主にバッチ処理の指標。ジョブを投入してから結果がすべて出終わるまでの時間
    • オーバヘッドを考えなければ:
      • TAT = 処理待ち時間 + CPU時間 + 入出力時間
  • 時間の範囲:
    • レスポンスタイム=入力終了 → 出力開始
    • ターンアラウンドタイム=ジョブの投入 → 出力終了
  • オーバヘッド:
    • ジョブやプログラム本来の処理時間以外に、OSが使う時間(ジョブに割り振れない時間)
  • MIPS:
    • 1秒間に実行できる命令数を百万(10⁶)単位で表したもの
    • 設計法や構成部品で結果が変わるので、同じメーカ・同じアーキテクチャのコンピュータどうしのCPU性能比較に使う
  • FLOPS:
    • 1秒間に実行できる浮動小数点演算の回数
    • 3次元CGの描画処理や、ベクトルコンピュータでの科学技術計算の性能指標に使う
    • 接頭語を付けて表す:
      • 10⁶FLOPS = 1MFLOPS、10⁹FLOPS = 1GFLOPS(M、G、T)
  • ベクトルコンピュータ(ベクトル計算機):
    • 一次元に並んだ複数のデータ(ベクトルデータ)をまとめて処理して、大規模な数値計算を行うコンピュータ

システムの性能評価の技法:どう評価するか

  • 命令ミックス:
    • よく使う命令の実行時間と出現頻度(出現率)を表したもの
    • コマーシャルミックス:
      • 事務計算向け
    • ギブソンミックス:
      • 科学技術計算向け
    • 評価方法:
      • 命令ごとに「実行時間 × 出現率」を出して合計し、平均命令実行時間を求める。これを命令ミックス値といい、小さいほど高性能
    • ★例題
命令 実行時間(マイクロ秒) 出現率
加減算 0.4 50%
乗除算 1.2 25%
比較 1.0 15%
分岐 3.5 10%
  • 平均命令実行時間 =
    • 0.4×0.5 + 1.2×0.25 + 1.0×0.15 + 3.5×0.1 = 0.2 + 0.3 + 0.15 + 0.35 = 1.0マイクロ秒
  • MIPS値 =
    • 平均命令実行時間の逆数。1 ÷(1.0×10⁻⁶)= 1×10⁶ = 1MIPS
  • 簡単な例:
    • 平均命令実行時間が0.02マイクロ秒なら、1 ÷(0.02×10⁻⁶)= 50×10⁶ = 50MIPS
  • ベンチマーク:
    • 使用目的に合った、または対象業務の典型的な処理をモデル化した標準プログラム(ベンチマークプログラム)を実行して時間などを測り、性能を評価すること
    • 同じプログラムを違う機種で動かせば、異機種間の比較ができ、機種選定の材料にもなる
  • SPEC(システム性能評価協会、米国の非営利団体):
    • プロセッサの性能を評価するベンチマーク
    • SPECint:
      • 整数演算性能。評価値は、基準マシンと比べた処理時間の相対値
    • SPECfp:
      • 浮動小数点演算性能
    • 制定年度で SPECint95、SPECfp2000 などと呼ぶ
    • 1992年に、UNIXで業界標準だったDhrystone(整数演算)とWhetstone(浮動小数点演算)の代わりとして決められた
    • 注意(最新情報):
      • 現在のCPU向けの版はSPEC CPU 2017(整数・浮動小数点の両方を含む)。試験では「SPECint=整数、SPECfp=浮動小数点」を押さえればよい
  • Dhrystone/MIPS:
    • Dhrystoneベンチマークで測ったMIPS値
  • Linpack:
    • 浮動小数点演算性能を評価するベンチマーク(スーパコンピュータのランキングで有名)
  • TPC(トランザクション処理性能評議会、米国の非営利団体):
    • オンライントランザクション処理(OLTP)システムの性能を評価するベンチマーク
    • プロセッサなど構成要素ではなく、システム全体の性能を評価するのが特徴
種類 何を評価する?
TPC-C OLTPシステム
TPC-E TPC-Cの後継。証券会社の業務をモデルに、複雑なDB(市場データ、顧客データ、証券会社データ)で色々なトランザクションを実行し、OLTPの性能を測る
TPC-App APサーバとWebサービス
TPC-H 意思決定支援システム
  • シミュレーション:
    • 評価対象のシステムを模擬するモデルを作り、コンピュータ上で擬似的に動かして評価する方法。システムパラメタの適切な値や限界値などを得る
    • 数学的モデルで解析できないときの強力な道具。例:
      • 待ち行列理論の適用条件が1つでも成り立たないときは、シミュレーションで評価する
    • 長所:
      • 解析的な方法で検証しにくいモデルでも、数値的に解を求められる
    • 短所:
      • 乱数を使うことが多く、解析的な方法より精度が低い。計算量も膨大
    • コツ:
      • 知りたい性能項目に直接関係ない事象は簡略化して、単純なモデルを作る(複雑な事象 → 単純化・抽象化したモデル)
  • その他の性能評価法
方法 中身
カーネルプログラム法 行列計算などの標準的な計算プログラムを実行し、CPU処理速度を他のコンピュータと比べる
カタログ性能 各構成要素のカタログ性能データを集めて、システム全体の性能を計算する

モニタリング:動いているシステムを見張る

  • ボトルネックを見つけて直すことが運用段階で重要
  • チューニング:
    • ボトルネックになっている部分を見つけて改善すること
  • モニタリング:
    • 測定用ソフトウェアや特別なハードウェアで、各プログラムの実行状態や資源の利用状況を測ること。性能評価のデータが得られ、性能低下の原因や兆候を見つけられる
  • ソフトウェアモニタとハードウェアモニタ
項目 ソフトウェアモニタ ハードウェアモニタ
測り方 測定用のプログラムで測る(OSに組み込まれた機能、または専用ソフト) 専用のハードウェアで測る
測定項目の追加・変更 比較的容易 困難
精度 測定対象の資源を自分も使うので、誤差が出やすい 測定対象の資源を使わないので、誤差が少ない厳密な測定ができる
向いている場面 ― 「ソフトでは不可能」「ソフトでは効率が落ちる」「正確な値が必要」な項目
  • ★測定対象(「ソフトウェアモニタが必要なもの」が問われる)
    • ソフトウェアモニタ:
      • プロセスごとの入出力回数、プロセスごとのCPU使用時間(どちらも通常はOSの機能にある)、仮想記憶のページング回数、スーパバイザモードで動く時間の割合、メモリの使用状況、応答時間
    • ハードウェアモニタ:
      • キャッシュメモリのヒット率、実行命令回数と所要時間、命令種別の使用回数、主記憶のアドレスごとのアクセス頻度、チャネルの利用率
    • 見分け方:
      • 「プロセス」「OS」の単位で数えるものはソフト、CPUの中の細かい動き(キャッシュ、命令、アドレス)はハード

キャパシティプランニング:将来に備えて計画する

  • キャパシティプランニング:
    • 新規開発や再構築のとき、業務要件、業務処理量、サービスレベルなどから必要なリソース(CPU性能、メモリ容量、ディスク容量など)を見積もり、経済性と拡張性を考えて最適な構成を計画すること
  • 手順(再構築の場合)
    1. 現行システムの稼働状況データ(CPU使用率、メモリ使用率、ディスク使用率など)、トランザクション数、応答時間などを集める
    2. 将来の業務処理量、データ量、利用者数の増加などを分析する
    3. 分析結果から、システム能力の限界時期を検討する
    4. 性能要件を満たすハードウェア資源などを検討し、最適な資源計画を立てる
  • キャパシティ管理(キャパシティマネジメント):
    • システムの負荷について現状分析と将来予測を行い、安定稼働や性能維持のために資源を適切に管理・調整する作業
    • 定期的に利用状況や性能を測って分析し、ボトルネックの装置を特定したり、将来ボトルネックになりそうな装置とその時期を予測したりする
    • 測定項目:
      • CPU利用率、CPU空き待ち時間、ページング発生率、ディスク使用率、スループット、レスポンスタイムなど
    • 例:
      • レーダチャートで見て、CPU利用率が高く、CPU空き待ち時間が長い → トランザクションがさらに増えるとCPUネックで処理が遅れると推測できる
  • サーバの性能向上策
方法 別名 中身
スケールアウト 水平スケール サーバを追加して、サーバ群としての処理能力や可用性を上げる
スケールアップ 垂直スケール 装置をより高性能なものに替えたり、プロセッサやメモリを増やしたりして、1台あたりの処理能力を上げる
  • 例:
    • 参照系のトランザクションが多く、複数サーバで分散処理しているシステムなら、スケールアウトで処理能力の向上が期待できる

システムの動的な拡張性

  • 不特定多数がアクセスするWebシステムは、特定の時間帯や日時だけアクセスが極端に増えることがある。最大アクセス量に合わせてサーバを増やしたり高性能にしたりすると、費用対効果が悪い
  • スケーラビリティ:
    • 処理能力を必要に応じて動的に拡張できること
  • オートスケール:
    • サーバの負荷に応じて、クラウドサーバ数を自動で増減させる仕組み。アクセス集中時は自動で増え(スケールアウト)、平常に戻ったら元に戻る(スケールイン)。常に最適なサーバ数で動かせる

混同しやすいペア

  • スループット(単位時間の仕事量)/レスポンスタイム(最初の結果まで)/ターンアラウンドタイム(全部終わるまで、バッチ向け)
  • MIPS(命令数、百万単位)/FLOPS(浮動小数点演算の回数)
  • コマーシャルミックス(事務計算)/ギブソンミックス(科学技術計算)
  • SPEC(プロセッサの性能)/TPC(システム全体の性能、OLTP)
  • SPECint(整数)/SPECfp(浮動小数点)、Dhrystone(整数)/Whetstone(浮動小数点)
  • TPC-C・TPC-E(OLTP)/TPC-H(意思決定支援)/TPC-App(APサーバとWebサービス)
  • ソフトウェアモニタ(変更が楽、誤差あり)/ハードウェアモニタ(正確、変更しにくい)
  • キャパシティプランニング(新規・再構築のときに計画する)/キャパシティ管理(運用中に測って調整する)
  • スケールアウト(台数を増やす、水平)/スケールアップ(1台を強くする、垂直)
  • スケールアウト(増やす)/スケールイン(減らす)

← 04 システム構成要素の目次に戻る

タイトルとURLをコピーしました