このページでは、性能指標、命令ミックスとベンチマーク、モニタリング、キャパシティプランニング、スケールアウトとスケールアップの違いがわかります。
- 一言で言うと:
- システムが「どれくらい速いか」を何で測り、どう評価し、どう見張り、将来に備えてどう増強するか、という話。
何で測るか(性能指標)→ どう評価するか(評価技法)→ 動いているものを見張る(モニタリング)→ 将来に備える(キャパシティプランニング)→ 必要なときだけ増やす(動的な拡張性)
覚え方の軸
- 性能指標は「量」と「時間」に分ける:
- 量=スループット、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性能、メモリ容量、ディスク容量など)を見積もり、経済性と拡張性を考えて最適な構成を計画すること
- 手順(再構築の場合)
- 現行システムの稼働状況データ(CPU使用率、メモリ使用率、ディスク使用率など)、トランザクション数、応答時間などを集める
- 将来の業務処理量、データ量、利用者数の増加などを分析する
- 分析結果から、システム能力の限界時期を検討する
- 性能要件を満たすハードウェア資源などを検討し、最適な資源計画を立てる
- キャパシティ管理(キャパシティマネジメント):
- システムの負荷について現状分析と将来予測を行い、安定稼働や性能維持のために資源を適切に管理・調整する作業
- 定期的に利用状況や性能を測って分析し、ボトルネックの装置を特定したり、将来ボトルネックになりそうな装置とその時期を予測したりする
- 測定項目:
- 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台を強くする、垂直)
- スケールアウト(増やす)/スケールイン(減らす)