CPU 使用率・待ち行列と必要台数の計算
タスクのタイムチャートを描いて CPU の遊休時間と使用率を求め、使用率の上限や到着頻度から最大処理件数(TPS)と必要な台数(CPU・ディスク・物理マシン)を計算できるようになる。待ち行列のグラフで、使用率と応答時間の関係を正しく選べるようになる。
性能の計算問題は「数え方の型」を知っているかどうかで決まり、毎回ほぼ同じ形で出る。実務でも「ピーク時にサーバを何台足せばよいか」の見積りにそのまま使える。
このレッスンで稽古する(用語チェック・過去問)全体像:型は「並べる」か「割る」の2つ
結論:このレッスンの計算は、ほぼ全部が「時間を順に並べて数える」か「仕事量 ÷ 1台の能力」のどちらかです。公式を覚えるより先に、問題がどちらの型かを見分けます。
| 型 | やること | 該当する問題 |
|---|---|---|
| 時間を並べる | 時刻ごとに、誰が何をしているかを表に書く | タスクスケジューリング、プリンタの割当て |
| 割り算する | 必要な処理量 ÷ 1台が出せる量 → 端数を処理 | TPS、必要 CPU 数、ディスク台数、縮退運転 |
| 重みを付けて平均する | 合計どうしで割る | 3か月の CPU 平均使用率 |
| グラフの形を選ぶ | 使用率が1に近づくと応答時間が発散する | 待ち行列 |
タスクスケジューリング:タイムチャートで遊休時間を数える
結論:優先度の高いタスクから CPU を渡すこと、I/O(入出力)中のタスクは CPU を使わないこと。この2つでタイムチャートが描けます。CPU が誰にも使われていない区間(遊休時間)を足せば答えです。
たとえると、CPU は1人しかいないレジ係で、I/O は客が自分でする袋詰めです。袋詰め中の客はレジ係を使わないので、その間に次の客の会計ができます。全員が袋詰め中ならレジ係の手は空きます。これが遊休時間です。
描き方のルール:
- 時刻0では、全タスクが実行可能状態(CPU が空けばすぐ動ける状態)
- CPU が空いたら、待っているタスクのうち最も優先度の高いものに渡す
- 「I/O は競合しない」とあれば、I/O は何本でも同時に進む
- 「I/O も一つずつ発生順に処理」とあれば、I/O にも行列ができる
- 優先度の高いタスクが戻ってきたとき、低いタスクが CPU を使っていれば奪う方式もあるので、問題文の条件に従う(下の過去問では起きない)
CPU 使用率 = CPU が動いていた時間 ÷ 全部が終わるまでの時間。遊休時間を聞くか使用率を聞くかの違いだけです。検算として「CPU 使用時間+遊休時間=全体の時間」を必ず確かめます。
CPU の平均使用率は「時間で重みを付けて」平均する
結論:月ごとの使用率を単純平均してはいけません。月によって総時間(分母)が違うので、使用時間の合計 ÷ 総時間の合計で求めます。
総時間は、遊休時間と使用率から逆算できます。遊休の割合は「1 − 使用率」なので、総時間 = 遊休時間 ÷ (1 − 使用率) です。出題は免除試験の2回だけなので、この式を押さえれば十分です。
待ち行列:使用率が1に近づくと応答時間は発散する
結論:CPU 使用率が上がるほど平均応答時間は加速度的に伸び、使用率1(100%)に近づくと無限大に発散します。正しいグラフは「最初はゆるやかで、右端の手前で垂直に立ち上がる」形です。
待ち行列は、処理を待つ要求が並ぶ列のことです。到着がポアソン分布(平均は決まっているが、ばらばらに来る)、処理時間が指数分布に従い、窓口が1つのモデルを M/M/1 と呼びます。このモデルでは 平均応答時間 = 平均処理時間 ÷ (1 − 使用率) です。
| 使用率 | 1 − 使用率 | 応答時間(処理時間の何倍か) |
|---|---|---|
| 0.5 | 0.5 | 2倍 |
| 0.8 | 0.2 | 5倍 |
| 0.9 | 0.1 | 10倍 |
| 0.99 | 0.01 | 100倍 |
レジの混み具合が5割なら少し待つ程度ですが、9割を超えると行列が一気に伸びるのと同じです。そのため実務では、CPU 使用率に70〜80%程度の上限を決めて運用します(次の TPS の計算にある「使用率の上限」はこのためです)。
| グラフの形 | 正誤 |
|---|---|
| ゆるやかに増え、使用率1の手前で急上昇して発散 | 正解 |
| 一直線に増える | 誤り(比例はしない) |
| 増え方が鈍って頭打ちになる(上に凸) | 誤り(形が逆) |
| 使用率によらず一定 | 誤り(混むほど待つ) |
処理能力と必要台数:一番遅い所が全体を決める
結論:「1台が1秒に処理できる量 × 使ってよい割合」を出し、必要な量をそれで割って切り上げます。複数のサーバを順に通る場合は、**いちばん遅い所(ボトルネック)**が全体の上限です。
TPS は、1秒あたりに処理できるトランザクション(ひとまとまりの処理)の件数です。Web サーバ → DB サーバと順に通るシステムでは、水道管の一番細い所で流量が決まるのと同じで、各サーバの TPS の最小値が答えになります。足し算はしません。
| 問われ方 | 計算 | 端数 |
|---|---|---|
| 最大 TPS | (1秒 ÷ 1件の CPU 時間) × 使用率の上限 → 各サーバの最小値 | そのまま |
| 必要な CPU 数 | 1秒あたりのリクエスト数 ÷ 1CPU が処理できる数 | 切り上げ |
| ディスクの台数 | 1秒間に発生する入出力時間の合計 ÷ 1秒 | 切り上げ |
| 追加する台数 | 必要な台数 − 今の台数 | ― |
一番つまずきやすいのは単位の揃え方です。「1時間あたり」は 3,600 で割って「1秒あたり」にし、ミリ秒は 1,000 で割って秒にします。
プリンタの割当て:「空いた順」に渡す
結論:「A から順に空いているプリンタに割り当てる」とは、一番早く空いたプリンタに次の要求を渡すという意味です。A → B → C → A と機械的に回すのではありません。
時刻を進めながら、各プリンタが何分に空くかを書き、空いた順に次の要求を割り当てます。同時に空いたら A → B → C の順で優先します。最後に、プリンタごとの印刷時間を合計して比べます。
縮退運転:全体の負荷 ÷ 残りの台数
結論:全体の負荷(台数 × 使用率)は、何台止まっても変わりません。全体の負荷 ÷ 残りの台数 が上限を超える台数を探します。
縮退運転は、故障した部分を切り離して、性能や機能を落としたまま運転を続けることです。20台 × 70% = 14台分の負荷を、残った物理マシンで均等に分け合います。
不等式の端数処理で間違えやすいので、境目の前後の台数で実際に割り算して確かめるのが確実です。
優先度方式のタイムチャートで CPU の遊休時間を数える
| 優先度 | 単独実行時の動作順序と処理時間(ミリ秒) |
|---|---|
| 高 | CPU(3) → I/O(5) → CPU(2) |
| 中 | CPU(2) → I/O(6) → CPU(2) |
| 低 | CPU(1) → I/O(5) → CPU(1) |
ア 2
イ 3
ウ 4
エ 5
解き方と答えを見る
- 時刻0:3つとも CPU 待ち。優先度「高」が CPU を使う(0〜3)。
- 時刻3:高は I/O へ(3〜8)。待っている中で一番高い「中」が CPU を使う(3〜5)。
- 時刻5:中は I/O へ(5〜11)。「低」が CPU を使う(5〜6)。
- 時刻6:低は I/O へ(6〜11)。3つとも I/O 中で CPU は空く → 遊休①(6〜8)= 2ミリ秒。
- 時刻8:高の I/O が終わり、高が CPU を使う(8〜10)。高はここで終了。
- 時刻10:中と低はどちらも I/O 中(11まで)→ 遊休②(10〜11)= 1ミリ秒。
- 時刻11:中と低が同時に戻る。優先度の高い中が CPU(11〜13)、次に低(13〜14)。全部が終わるのは 14ミリ秒。
- 遊休時間 = 2 + 1 = 3ミリ秒。検算:CPU 使用時間は 高(3+2)+中(2+2)+低(1+1) = 11、11 + 3 = 14 で全体の時間と一致する。
答え:3ミリ秒(この回の選択肢ではイ。同じ表の 2013h25h_am#18 ではウが3)
I/O も1つずつ順番に処理すると CPU 使用率はどうなるか
ア 43
イ 50
ウ 60
エ 75
出典:平成23年度 特別試験 基本情報技術者試験 午前 問18
解き方と答えを見る
- 図の目盛りで長さを読む:A = CPU2 → I/O8 → CPU3 → I/O4 → CPU3、B = CPU2 → I/O4 → CPU2 → I/O4 → CPU3。CPU 使用時間の合計は A8 + B7 = 15(並べ方を変えても変わらない)。
- 0〜2:A が CPU。2〜10:A が I/O。
- 2〜4:B が CPU。B の I/O は A が使用中なので 10 まで待ち、10〜14 に B の I/O。
- 10〜13:A が CPU。A の2回目の I/O は B が使用中なので 14 まで待ち、14〜18 に A の I/O。
- 14〜16:B が CPU。B の2回目の I/O は A が使用中なので 18 まで待ち、18〜22 に B の I/O。
- 18〜21:A が CPU(A 終了)。22〜25:B が CPU(B 終了)。全体の時間は 25。
- CPU 使用率 = 15 ÷ 25 = 0.6 → 60%。
答え:約60%(ウ)
3か月の CPU 平均使用率を総時間で重み付けして求める
| 月 | 使用率(%) | 遊休時間の合計(時間) |
|---|---|---|
| 4 | 60 | 120 |
| 5 | 80 | 20 |
| 6 | 20 | 80 |
ア 44
イ 50
ウ 53
エ 56
出典:基本情報技術者試験 科目A免除 修了試験 20130127 実施分 問19
解き方と答えを見る
- 総時間 = 遊休時間 ÷ (1 − 使用率)。4月:120 ÷ 0.4 = 300時間、5月:20 ÷ 0.2 = 100時間、6月:80 ÷ 0.8 = 100時間。
- 使用時間 = 総時間 × 使用率。4月 300 × 0.6 = 180、5月 100 × 0.8 = 80、6月 100 × 0.2 = 20 → 合計 280時間。
- 総時間の合計 = 300 + 100 + 100 = 500時間。
- 平均使用率 = 280 ÷ 500 = 0.56 → 56%。
答え:約56%(エ)。単純平均の (60 + 80 + 20) ÷ 3 ≒ 53% はひっかけ
Web と DB のどちらがボトルネックかで最大 TPS を決める
ア 400
イ 500
ウ 700
エ 1,100
出典:平成23年度 特別試験 基本情報技術者試験 午前 問19
解き方と答えを見る
- Web:1件 1ミリ秒 → 100%使えば 1,000ms ÷ 1ms = 1,000件/秒。上限 70% → 1,000 × 0.7 = 700TPS。
- DB:1件 10ブロック × 0.2ms = 2ms → 1,000ms ÷ 2ms = 500件/秒。上限 80% → 500 × 0.8 = 400TPS。
- 全トランザクションが両方のサーバを通るので、遅い方の DB の 400TPS がシステム全体の上限になる。
答え:400TPS(ア)
リクエストが2倍になったときに追加する CPU の数
ア 1
イ 2
ウ 3
エ 6
出典:基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問12
解き方と答えを見る
- 単位を揃える:36,000件/時 ÷ 3,600秒 = 10件/秒(今のピーク)。
- 今の能力を確かめる:Web は 1CPU × 10件 = 10件/秒、DB は 2CPU × 5件 = 10件/秒。どちらも余裕がない。
- 2倍になった後のピーク = 10 × 2 = 20件/秒。
- 必要な数:Web は 20 ÷ 10 = 2CPU、DB は 20 ÷ 5 = 4CPU。
- 追加する数:Web 2 − 1 = 1、DB 4 − 2 = 2 → 合計 1 + 2 = 3。
答え:3(ウ)
到着頻度と入出力時間から磁気ディスクの必要台数を出す
ア 3
イ 4
ウ 5
エ 6
解き方と答えを見る
- 1秒間に発生するディスク入出力の回数:20件 × 4回 = 80回。
- その処理時間の合計:80回 × 40ミリ秒 = 3,200ミリ秒 = 3.2秒。
- ディスク1台が1秒間に働けるのは最大1秒分(使用率100%)。
- 必要な台数 = 3.2秒 ÷ 1秒 = 3.2 → 切り上げて4台。3台では1秒間に3秒分しか処理できず、仕事がたまり続ける。
答え:4台(イ)
3台のプリンタに「空いた順」で印刷要求を割り当てる
ア A, B, C
イ B, A, C
ウ B, C, A
エ C, B, A
解き方と答えを見る
- 時刻0:A に5分(0〜5)、B に12分(0〜12)、C に4分(0〜4)。
- 時刻4:最初に空くのは C → 次の3分を C に(4〜7)。
- 時刻5:A が空く → 次の10分を A に(5〜15)。
- 時刻7:C が空く(B は 12 まで使用中)→ 最後の4分を C に(7〜11)。
- 合計:A = 5 + 10 = 15分、B = 12分、C = 4 + 3 + 4 = 11分。長い順に A, B, C。
答え:A, B, C(ア)。同じ問題が免除試験 menjo_20241208#13 でも出ている
物理マシンが何台止まると縮退運転になるか
ア 2
イ 3
ウ 4
エ 5
解き方と答えを見る
- 全体の負荷 = 20台 × 70% = 14台分(何台止まっても変わらない)。
- 残りが N 台なら、1台あたりの負荷 = 14 ÷ N。これが 90% を超えると縮退運転になる。
- 16台残る(4台停止):14 ÷ 16 = 87.5% → まだ90%以下。
- 15台残る(5台停止):14 ÷ 15 ≒ 93.3% → 90%を超えて縮退運転になる。
- 式で解く場合:14 ÷ N > 0.9 → N < 15.55… → 残りが15台以下 → 停止台数は 20 − 15 = 5台。
答え:5台(エ)
要点(試験直前に読む)
- タイムチャート:CPU は優先度の高い順に渡し、I/O 中のタスクは CPU を使わない。誰も CPU を使っていない区間が遊休時間で、使用時間+遊休時間=全体の時間で検算する
- 平均使用率は 使用時間の合計 ÷ 総時間の合計。総時間 = 遊休時間 ÷ (1 − 使用率)
- 待ち行列:応答時間 = 処理時間 ÷ (1 − 使用率)。使用率1の手前で発散するグラフが正解
- 最大 TPS は各サーバの (1秒 ÷ 1件の CPU 時間) × 使用率の上限 の最小値。足し算はしない
- 必要台数 = 必要な処理量 ÷ 1台の能力 → 切り上げ。追加数は 必要な台数 − 今の台数
- プリンタは「空いた順」に割り当てる。縮退運転は 全体の負荷 ÷ 残りの台数 を境目の前後で確かめる
ひっかけ
- 単純平均・合計の罠:月ごとの使用率の単純平均(約53%)や、Web と DB の TPS の合計(1,100)は必ず選択肢に並ぶ。分母の大きさの違いと、「順に通るなら最小値」を思い出す
- 端数処理の罠:ディスク3.2台は切り上げて4台。縮退運転の 15.55… は「残りの台数」なので15台以下、答える停止台数は5台。何の台数を求めているかを確かめる
- 必要数と追加数の取り違え:リクエストが2倍のとき必要なのは Web 2・DB 4 の計6だが、問われているのは追加の3
- 条件の読み落とし:「空いているプリンタへ」を A → B → C の巡回と読むと B が最長になってしまう。I/O の条件(競合しない/1つずつ順に)も同じように読み落とさない
- グラフの罠:直線、頭打ちの曲線、水平線はすべて誤り。使用率1の手前で垂直に立ち上がる曲線を選ぶ
用語(17)
ある時間のうち、CPU が実際に処理をしていた時間の割合。
⚠ 遊休時間はその残りの時間。使用率と遊休の割合を足すと100%になる。
CPU が実行する処理を持たず、何もしていない時間。
⚠ タスク側の I/O 待ちとは別物。あるタスクが I/O 待ちでも、ほかのタスクが CPU を使っていれば遊休ではない。
OS が、複数のタスクのうちどれにいつ CPU を使わせるかを決める仕組み。
実行可能なタスクのうち、優先度の最も高いものに CPU を割り当てるスケジューリング方式。
⚠ 処理時間の短い順に渡す SJF(最短ジョブ優先)や、到着順に渡す FCFS(先着順)とは別物。優先度は処理時間の長さや到着順と関係ない。
CPU が空けばすぐ動ける状態で、CPU の割当てを待っているタスクの状態。
⚠ 待ち状態(I/O の完了などを待っていて、CPU が空いても動けない)や実行状態(いま CPU を使用中)と区別する。
ディスクやプリンタなどとのデータのやり取りで、その間 CPU は使わない処理。
要求を出してから処理が終わって結果が返るまでの時間の平均で、待ち時間と処理時間の合計。
⚠ 処理時間(実際に処理している時間)は待ち時間を含まない。応答時間 = 待ち時間 + 処理時間。
処理を待つ要求が並ぶ列のこと。また、その長さや待ち時間を計算する理論。
到着がポアソン分布、処理時間が指数分布に従い、窓口が1つの待ち行列モデル。平均応答時間は処理時間 ÷ (1 − 使用率)。
一定時間にランダムな出来事が何回起きるかを表す分布で、ここでは要求の到着の仕方を表す。
⚠ 指数分布は1件の処理にかかる時間の分布。到着はポアソン分布、処理時間は指数分布と覚える。
短い値が多く、長い値ほど少なくなる時間の分布で、ここでは1件あたりの処理時間を表す。
⚠ ポアソン分布(到着する件数)と対で出題される。
1秒あたりに処理できるトランザクションの件数。
⚠ MIPS は CPU が1秒間に実行する命令数(百万単位)で、業務の処理件数ではない。
単位時間あたりに処理できる仕事の量。
⚠ 応答時間は1件あたりにかかる時間。スループットは量、応答時間は速さの指標。
処理の流れの中で最も能力が低く、全体の性能を決めてしまう箇所。
故障した部分を切り離し、性能や機能を落としたまま運転を続けること。
⚠ フェールセーフ(危険を避けるため安全側に止める)とは逆で、止めずに運転を続ける。
項目ごとの大きさの違いを重みとして付けて求める平均(ここでは月ごとの総時間で重みを付ける)。
⚠ 単純平均は重みを付けずに足して個数で割るため、分母の大きさが違うと誤った値になる。
1台の物理マシンの資源を分けて動かす、ソフトウェア上のコンピュータ。
⚠ 物理マシンは実際の機械。縮退運転の問題では、止まるのは物理マシンで、その上の仮想マシンは残りの物理マシンに移る。
このレッスンの過去問
- タスクスケジューリングのCPU使用率計算平成30年度 秋期 基本情報技術者試験 午前 問16
- CPU平均使用率の加重平均計算基本情報技術者試験 科目A免除 修了試験 20130127 実施分 問19
- CPU使用率と平均応答時間の関係(待ち行列)平成27年度 春期 基本情報技術者試験 午前 問14
- ボトルネック資源によるTPS計算(CPU使用率上限)平成23年度 特別試験 基本情報技術者試験 午前 問19
- リクエスト数増加時の必要CPU数計算基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問12
- 磁気ディスク必要台数の計算(入出力処理時間と到着頻度)平成22年度 春期 基本情報技術者試験 午前 問17
- 複数プリンタへの印刷要求割当て時間シミュレーション平成27年度 春期 基本情報技術者試験 午前 問21
- 仮想マシン停止台数と縮退運転条件の計算平成27年度 春期 基本情報技術者試験 午前 問13