資格道場 › レッスン一覧 › システム構成要素
システム構成要素・6/8・13分

性能指標の基本と性能評価

ゴール

スループット・ターンアラウンドタイム・レスポンスタイムを言い分けられるようになり、応答時間やトランザクション処理時間の計算問題を自力で解けるようになる。あわせて、ベンチマークテストの定義、性能劣化の調査項目、キャパシティプランニングの手順を選択肢から選べるようになる。

システムが「速いかどうか」を数字で語るための共通言語なので、用語の定義と簡単な時間計算が毎年のように出ます。実務でも「レスポンスが遅い」「処理件数が足りない」は要件定義や障害対応で必ず話題になり、どの指標の話かを言い分けられると会話がかみ合います。

このレッスンで稽古する(用語チェック・過去問)

結論:性能は「量」と「時間」の2つで測る

性能指標(システムの速さを表す物差し)は、単位時間あたりの処理量と1件にかかる時間の2種類に分かれます。単位時間あたりの処理量を表すのはスループットだけです。ターンアラウンドタイムとレスポンスタイムは、どちらも1件にかかる時間です。

レストランにたとえます。スループット=1時間に何組の客をさばけるか。レスポンスタイム=注文を言い終えてから最初の一皿が出るまで。ターンアラウンドタイム=注文してから最後の皿まで全部そろうまで、です。

用語 何を表すか 測り始め 測り終わり 単位の例
スループット 単位時間あたりの処理量(処理能力) ― ― 件/秒、ジョブ/時
レスポンスタイム(応答時間) 1件の要求に対し、最初の反応が返るまでの時間 要求の入力を終えたとき 最初の結果が出始めたとき ミリ秒
ターンアラウンドタイム 1件の仕事を投入してから、全部終わるまでの時間 ジョブを投入したとき 結果の出力がすべて終わったとき 秒、分

見分け方は2つです。「単位時間当たり」「能力」「仕事の量」とあればスループット。「最初の〜が出始めるまで」とあればレスポンスタイム、「結果がすべて出るまで」とあればターンアラウンドタイムです。

選択肢に紛れ込む関係ない用語も押さえておきます。MIPSはCPUが1秒間に何百万命令を実行できるかを表し、CPU単体の速さの指標です。システム全体の処理量ではありません。アクセスタイムは記憶装置にデータを読み書きする要求を出してから、読み書きが始まるまでの時間です。サイクルタイムは記憶装置に続けてアクセスするときの1回分の周期です。タイムスライスはOSが1つのプロセスにCPUを割り当てる短い持ち時間で、性能指標ではありません。

1件の仕事を時間軸で見るターンアラウンドタイムレスポンスタイム入力処理中結果を出力中時間投入入力終了結果が出始める全部出終わるスループットは時間ではなく量単位の例:件/秒、ジョブ/時
1件の仕事を時間軸に置くと、ターンアラウンドタイムは「投入」から、レスポンスタイムは「入力終了」から測り始め、スループットだけは時間ではなく量を表す。

応答時間を分解する:引き算でサーバの時間を出す

オンライン処理(端末からの要求にその場で答える処理)では、応答時間は次の3つの足し算です。

応答時間 = 端末処理時間 + 回線伝送時間 + サーバ処理時間

flowchart LR
  A["端末処理"] --> B["回線伝送(行き)"] --> C["サーバ処理"] --> D["回線伝送(帰り)"] --> E["端末に表示"]

端末側で測れるのは応答時間・回線伝送時間・端末処理時間です。そのため、サーバ処理時間は残りとして引き算で求めます。サーバ処理時間 = 応答時間 − 回線伝送時間 − 端末処理時間です。選択肢は+と−の組合せを入れ替えただけなので、「全体から自分以外を全部引く」と覚えれば迷いません。

応答時間=3つの足し算応答時間(端末で測れる)端末処理回線伝送サーバ処理測れる測れる残り=引き算で出すサーバ処理時間=応答時間-回線伝送時間-端末処理時間
端末で測れる応答時間を3つに割ると、サーバ処理時間は「全体から測れる2つを引いた残り」になる。

時間の計算:部品ごとに足す・部品ごとに掛ける

ターンアラウンドタイムやトランザクション処理時間の計算は、すべて部品の時間を足すだけで解けます。待ち時間やオーバヘッド(本来の処理以外にかかる余分な時間)は、問題文に「無視する」とあれば足しません。

型1:ターンアラウンドタイムの改善・予測

  • ターンアラウンドタイム = CPU時間 + 入出力時間(+ その他のオーバヘッド)
  • 「何倍にすれば」「何%になる」は、指定された部品にだけ掛けます。全体に掛けるのはひっかけです。

型2:1トランザクションの平均処理時間

  • CPU時間 = 命令数 ÷ (MIPS × 100万)[秒]
  • ファイルアクセス時間 = 1回のアクセス時間 × 回数
  • 平均処理時間 = CPU時間 + ファイルアクセス時間

MIPSは「1秒間に何百万命令」なので、30MIPS=1秒に3,000万命令です。命令数を「万」のまま割ると桁がずれます。60万命令 ÷ 30MIPS = 0.02秒 = 20ミリ秒のように、最後にミリ秒(×1,000)へ直します。

MIPSは「百万」をかけて直す30MIPS=1秒に3,000万命令60万命令 ÷ 3,000万命令/秒=0.02秒×1,000で 20ミリ秒
30MIPSを「1秒に3,000万命令」に直してから60万命令を割り、最後に×1,000でミリ秒に直す流れ。

性能をどう測るか:ベンチマークテストと他の評価手法

ベンチマークテストは、標準的な測定用プログラムを実際に動かして処理性能を数値化し、他の製品と比べる手法です。出題が多い知識で、評価手法の説明を4つ並べて正しいものを選ばせる形が定番です。

手法 やること キーワード
ベンチマークテスト 標準的なプログラムを実際に実行し、性能を数値化して比較する 標準的なプログラム・実行・他製品と比較
モニタリング(モニタ) 監視・計測用プログラムで、稼働中のシステムの状態や資源の使用状況を測る 稼働状態・資源の状況を測定
シミュレーション モデルを作って模擬的に実験し、将来を予測する モデル・模擬・将来予測
机上解析(命令ミックスなど) プログラムを実行せず、命令の出現回数などから処理時間を推定する 実際には実行せず・机上
負荷テスト 想定した量のトランザクションに耐えられるかを判定する 想定される量に耐えられるか
MIPS 1命令あたりの実行時間からCPUの速さを表す 1命令の平均時間
稼働率 システムが動いている時間の割合(前のレッスン) 連続して稼働する割合

もう1つ大事なのは、何のプログラムで測るかです。新しいシステムを入れるときの性能評価は、実際によく使うプログラムや、処理時間を保証しなければならないプログラムで測ります。「単純で分かりやすいテストプログラム」や「構成の違いの影響を受けにくいプログラム」では、実際の使われ方とずれた結果になってしまいます。

遅くなったら何を見るか:原因と調べる項目を対応させる

性能が落ちたときは、想定原因ごとに調査項目を対応させる問題が出ます。原因の言葉と調査項目の言葉を結び付けるだけで解けます。

想定原因 調べること
他システムの同居による負荷の増加、接続数の増加による通信量の増加 外的要因の変化の確認
非定型検索(毎回形の違う検索)で、とても時間のかかるSQLが実行されている 遅い処理の特定
フラグメンテーションによるディスクI/Oの増加 データの格納状況の確認
データベースバッファ(DBがよく使うデータを置くメモリ)の容量不足 キャッシュのヒット率(必要なデータがメモリにあった割合)の調査

フラグメンテーション(断片化)とは、データがディスク上の飛び飛びの場所に散らばった状態です。1冊の本が本棚のあちこちの段に分かれて置かれていると、取り出す手間が増えるのと同じです。断片化しているかどうかは、データがどう格納されているかを見れば分かります。

主記憶(メモリ)の取り合いを最もよく表す指標はページング発生頻度です。ページングとは、メモリが足りないときにデータをディスクと出し入れすることです。メモリの取り合いが激しいほど、この出し入れが増えます。メモリ使用率は「どれだけ使っているか」で、取り合いの激しさは表しません。実行待ち時間はCPUの取り合いを表します。

ディスク上のデータの置かれ方まとまって格納断片化(飛び飛び)12341234続けて読めるあちこち探す→I/O増調べる項目:データの格納状況
同じ4つのデータでも、断片化すると左右に飛び飛びで置かれ、1→2→3→4 と読むたびに行き来してディスクI/Oが増えるので、データの格納状況を確認する。

キャパシティプランニング:現状 → 将来の需要 → 構成 → 評価

キャパシティプランニングとは、将来の業務量に対して、必要なCPU・ディスク・サーバ台数などを前もって計画することです。作業項目を並べ替えさせる問題が出ます。

順番の原則は**「今を測る → これからの需要を知る → 足りなくなる時期や必要な構成を考える → 評価して増強・見直しする」**です。要件定義と同じで、現状と要件がそろわないうちに構成は決められません。

  • 過去問の例A:稼働状況から性能情報を把握 → 新規業務の要件をヒアリング → 構成案を検討 → 構成案を評価・見直し
  • 過去問の例B:基礎数値(稼働データ・トランザクション数)を把握 → 端末増設や利用者の増加を検討 → システム能力の限界時期を検討 → CPU・ディスク・メモリの増設を検討

増設・評価のような「手を打つ」作業は必ず最後、現状の数値の把握が必ず最初です。この2点だけで、選択肢はほぼ1つに絞れます。

例題 1

ターンアラウンドタイムを半分にするには、入出力時間を何倍にするか

プログラムの CPU 実行時間が 300 ミリ秒,入出力時間が 600 ミリ秒,その他のオーバヘッドが 100 ミリ秒の場合,ターンアラウンドタイムを半分に改善するには,入出力時間を現在の何倍にすればよいか。
選択肢は分数表記(ア 1/6,イ 1/4,ウ 1/3,エ 1/2)

ア 1/6
イ 1/4
ウ 1/3
エ 1/2

出典:平成21年度 春期 基本情報技術者試験 午前 問18

解き方と答えを見る
  1. 今のターンアラウンドタイムを足し算で出す:CPU 300ms + 入出力 600ms + その他 100ms = 1,000ms
  2. 目標は半分なので 1,000ms ÷ 2 = 500ms。短くしなければならないのは 1,000 − 500 = 500ms
  3. 動かせるのは入出力時間だけ。CPUの300msとその他の100msはそのまま残る
  4. 入出力時間の目標 = 500 − 300 − 100 = 100ms(600msを500ms縮める、と同じ)
  5. 倍率 = 目標 ÷ 現在 = 100 ÷ 600 = 1/6

答え:ア:1/6倍。入出力時間を半分(1/2)にするわけではない点に注意。

例題 2

CPU時間と入出力時間が別々に増減するときのターンアラウンドタイム

あるジョブのターンアラウンドタイムを解析したところ,1,350 秒のうち CPU 時間が 2/3 であり,残りは入出力時間であった。1 年後はデータ量の増加が見込まれているが,CPU 時間は性能改善によって当年比 80%に,入出力時間は当年比 120%になることが予想される。このとき,ジョブのターンアラウンドタイムは何秒になるか。ここで,待ち時間,オーバヘッドなどは考慮しないものとする。

ア 1,095
イ 1,260
ウ 1,500
エ 1,665

出典:基本情報技術者試験 科目A免除 修了試験 20131215 実施分 問17

解き方と答えを見る
  1. CPU時間 = 1,350秒 × 2/3 = 900秒
  2. 入出力時間 = 1,350 − 900 = 450秒(残りの1/3)
  3. 1年後のCPU時間 = 900 × 0.8 = 720秒
  4. 1年後の入出力時間 = 450 × 1.2 = 540秒
  5. 合計 = 720 + 540 = 1,260秒

答え:イ:1,260秒。増減率は部品ごとに掛けてから足す。

例題 3

MIPSとファイルアクセス回数から1トランザクションの平均処理時間を出す

オンラインシステムにおいて,1 トランザクションの処理に平均 60 万命令を実行し,平均 2 回のファイルアクセスが必要であるとき,CPU 性能が 30 MIPS であるコンピュータの 1 トランザクションの平均処理時間は何ミリ秒か。ここで,ファイルの平均アクセス時間は 30 ミリ秒とし,当該トランザクション以外の処理は発生しないものとする。

ア 8
イ 40
ウ 62
エ 80

出典:平成21年度 秋期 基本情報技術者試験 午前 問17

解き方と答えを見る
  1. 30MIPS = 1秒に 30 × 100万 = 3,000万命令
  2. CPU時間 = 60万命令 ÷ 3,000万命令/秒 = 0.02秒 = 20ms
  3. ファイルアクセス時間 = 30ms × 2回 = 60ms
  4. 平均処理時間 = 20 + 60 = 80ms

答え:エ:80ms。20ms(CPUだけ)や60ms(ファイルだけ)で止めない。menjo_20131215#16 も 600万÷300MIPS=20ms、3ms×20回=60ms で同じく80ms。

例題 4

端末で測れる値からサーバ処理時間を求める式

オンラインリアルタイム処理における一つのトランザクションについて,端末側で応答時間,回線伝送時間,端末処理時間が測定できるとき,サーバ処理時間を求める式として適切なものはどれか。ここで,他のオーバヘッドは無視するものとする。

ア サーバ処理時間=応答時間+回線伝送時間+端末処理時間
イ サーバ処理時間=応答時間+回線伝送時間-端末処理時間
ウ サーバ処理時間=応答時間-回線伝送時間+端末処理時間
エ サーバ処理時間=応答時間-回線伝送時間-端末処理時間

出典:基本情報技術者試験 科目A免除 修了試験 20200126 実施分 問16

解き方と答えを見る
  1. 応答時間の中身を書き出す:応答時間 = 端末処理時間 + 回線伝送時間 + サーバ処理時間
  2. 求めたいサーバ処理時間を左辺に移す
  3. サーバ処理時間 = 応答時間 − 回線伝送時間 − 端末処理時間
  4. 選択肢のうち、両方とも「−」になっているものを選ぶ

答え:エ:サーバ処理時間=応答時間-回線伝送時間-端末処理時間

要点(試験直前に読む)

  • 「単位時間あたりの処理量・能力」はスループット。レスポンスタイムは最初の結果が「出始める」まで、ターンアラウンドタイムは結果が「すべて出る」までの時間。
  • 応答時間 = 端末処理時間 + 回線伝送時間 + サーバ処理時間。サーバ処理時間は応答時間から残りの2つを両方とも引く。
  • 時間の計算は部品ごとに足す。増減率や倍率は、指定された部品にだけ掛けてから合計する。
  • CPU時間 = 命令数 ÷(MIPS × 100万)秒。最後にミリ秒に直して、ファイルアクセス時間(1回の時間 × 回数)を足す。
  • ベンチマークテスト = 標準的なプログラムを実際に実行して数値化し、他製品と比較する。主記憶の取り合いはページング発生頻度、断片化はデータの格納状況で調べる。
  • キャパシティプランニングは「現状の数値の把握が最初・増設や評価が最後」。

ひっかけ

  • 「単位時間当たり」と書いてあるのに、時間を表す応答時間やターンアラウンドタイムを選ばせる → 単位時間あたりの「量」はスループットだけ。
  • レスポンスタイムとターンアラウンドタイムの入れ替え → 「最初の〜が出始めるまで」はレスポンス、「全部出終わるまで」はターンアラウンド。
  • 計算問題で、途中の値(CPU時間20msだけ・ファイル時間60msだけ)や、全体に1つの倍率を掛けた値を選択肢に並べる → 部品ごとに計算してから最後に合計する。改善問題では「入出力を1/2」ではなく、目標から逆算する。
  • ベンチマークの説明に、モニタリング(稼働状態を測定)・シミュレーション(モデルで模擬)・机上解析(実行せずに推定)・負荷テスト(耐えられるか判定)・MIPS・稼働率を混ぜる → 「標準的なプログラムを実行して数値化・比較」がベンチマーク。
  • 主記憶の取り合いの指標として「メモリ使用率」、断片化の調査項目として「キャッシュヒット率」を置く → 取り合いはページング発生頻度、断片化はデータの格納状況。

用語(16)

スループット するーぷっと(throughput)
システムが単位時間あたりに処理できる仕事の量で、処理能力を表す指標。
⚠ レスポンスタイム・ターンアラウンドタイムは1件あたりの「時間」。「単位時間当たり」「能力」とあればスループット。
レスポンスタイム(応答時間) れすぽんすたいむ(response time)
要求の入力を終えてから、最初の処理結果が出始めるまでの時間。
⚠ ターンアラウンドタイムは結果がすべて出終わるまで。「出始める」ならレスポンスタイム。
ターンアラウンドタイム たーんあらうんどたいむ(turnaround time)
ジョブを投入してから、結果の出力がすべて終わるまでの時間。
⚠ レスポンスタイムは最初の反応まで。「すべて」「完了」ならターンアラウンドタイム。
MIPS Million Instructions Per Second
CPUが1秒間に何百万命令を実行できるかを表す、CPU単体の速さの指標。
⚠ システム全体の処理量(スループット)とは別物。計算では「×100万命令/秒」に直す。
アクセスタイム あくせすたいむ(access time)
記憶装置に読み書きを要求してから、実際に読み書きが始まるまでの時間。
⚠ 利用者の要求に対する反応時間はレスポンスタイム。アクセスタイムは記憶装置の話。
サイクルタイム さいくるたいむ(cycle time)
記憶装置に続けてアクセスするとき、1回のアクセスを始めてから次のアクセスを始められるまでの周期。
⚠ アクセスタイムに次のアクセスまでの準備時間を足したもの。システムの応答とは関係ない。
タイムスライス たいむすらいす(time slice)
OSが複数のプロセスにCPUを順番に割り当てるときの、1回分の持ち時間。
⚠ 性能指標ではない。指標を問う問題では外す選択肢。
オーバヘッド おーばへっど(overhead)
本来の処理以外に余分にかかる時間や資源(OSの管理処理など)。
⚠ 計算問題では「無視する」とあれば足さない。書いてあれば合計に含める。
ベンチマークテスト べんちまーくてすと(benchmark test)
標準的な測定用プログラムを実際に実行して処理性能を数値化し、他の製品と比べる性能評価の手法。
⚠ モニタリングは稼働中のシステムの計測、シミュレーションはモデルで模擬、机上解析は実行しない、負荷テストは想定量に耐えるかの判定。
モニタリング(モニタ) もにたりんぐ(monitoring)
監視・計測用のプログラムで、稼働中のシステムの状態や資源の使い方を測定する手法。
⚠ ベンチマークは標準プログラムを実行して他製品と比べる点が違う。
シミュレーション しみゅれーしょん(simulation)
システムのモデルを作って模擬的に実験し、将来を含めた性能を予測する手法。
⚠ 実物で標準プログラムを動かすのがベンチマーク。「モデル」「模擬」ならシミュレーション。
負荷テスト ふかてすと(load test)
想定した量のトランザクションをかけて、システムが耐えられるかを確かめるテスト。
⚠ ベンチマークは性能を数値化して他製品と比べるもので、耐えられるかの判定ではない。
ページング ぺーじんぐ(paging)
主記憶が足りないとき、ページ(決まった大きさの区画)単位でデータを主記憶とディスクの間で出し入れすること。
⚠ 主記憶の取り合いを表すのはページング発生頻度。メモリ使用率は使用量にすぎず、実行待ち時間はCPUの取り合いを表す。
フラグメンテーション ふらぐめんてーしょん(fragmentation/断片化)
データが記憶領域の飛び飛びの場所に散らばった状態で、ディスクI/Oが増えて遅くなる原因になる。
⚠ 調べるのは「データの格納状況」。キャッシュのヒット率はバッファ容量不足を調べる項目。
キャッシュヒット率 きゃっしゅひっとりつ(cache hit ratio)
必要なデータが高速なメモリ(キャッシュ・バッファ)上で見つかった割合。
⚠ バッファ容量の不足を疑うときに調べる。断片化の調査ではない。
キャパシティプランニング きゃぱしてぃぷらんにんぐ(capacity planning)
将来の業務量を見込み、必要なハードウェアやシステム構成を前もって計画すること。
⚠ 手順は「現状把握→需要・要件の把握→限界時期・構成の検討→評価・増強」。増設の検討を先に置く選択肢はひっかけ。

このレッスンの過去問

このレッスンで稽古する