待ち行列の計算をやさしく図解 — 利用率・平均待ち時間・平均応答時間の求め方(M/M/1)
※この記事にはプロモーション(広告)が含まれます。広告表記の方針
「サーバーの利用率が上がると、なぜ急に応答が遅くなるの?」——その答えが待ち行列理論にあります。ATMの行列も、サーバーへのリクエストも、同じ数式で説明できます。この記事では、基本のM/M/1モデルについて、利用率・平均待ち時間・平均応答時間の求め方を、例題と計算ツールつきで解説します。
待ち行列とは — 到着・待ち・サービス
待ち行列は、①客が到着し、②窓口が空くまで並んで待ち、③サービスを受けて出ていくという流れをモデル化したものです。銀行のATM、レジ、そしてサーバーへのリクエスト処理も同じ構造。「単位時間に何人来るか(到着率)」と「単位時間に何人さばけるか(サービス率)」のバランスで、待ち時間が決まります。
M/M/1モデルとは
M/M/1は、待ち行列のもっとも基本的なモデルです。3つの記号にはそれぞれ意味があります(ケンドールの記号)。
| 位置 | 記号 | 意味 |
|---|---|---|
| 1つ目 | M | 到着がランダム(客がバラバラに来る) |
| 2つ目 | M | サービス時間がランダム(処理時間がバラつく) |
| 3つ目 | 1 | 窓口が1つ |
つまりM/M/1は「ランダムに来る客を、1つの窓口で順番に処理する」もっともシンプルなモデルです。基本情報ではこのM/M/1が扱われます。
到着率・サービス率とは
待ち行列の計算で使う値は、「どれくらいのペースで来るか」と「どれくらいのペースでさばけるか」の2つです。それぞれ率(1単位時間あたりの件数)で表す方法と、時間(1件あたり何秒か)で表す方法があり、互いに逆数の関係です。
| 用語 | 意味 | 例 |
|---|---|---|
| 到着率 λ(ラムダ) | 1単位時間あたりに平均何件到着するか | 1秒に平均4件 → λ=4件/秒 |
| 平均到着間隔 | 次の1件が来るまでの平均時間(=1÷λ) | λ=4件/秒 → 0.25秒 |
| サービス率 μ(ミュー) | 1単位時間あたりに平均何件処理できるか | 1秒に平均5件 → μ=5件/秒 |
| 平均サービス時間 Ts | 1件の処理にかかる平均時間(=1÷μ) | μ=5件/秒 → 0.2秒 |
試験問題では、率ではなく「平均到着間隔」や「1件あたりの平均処理時間」で与えられることもよくあります。どちらで与えられても、逆数にすれば同じものとして扱えます。
利用率 ρ — 窓口の忙しさ
まず求めるのが利用率 ρ(ロー)。窓口がどれくらい忙しく働いているかの割合で、到着率λ ÷ サービス率μ で計算します。
利用率 ρ = λ(到着率) ÷ μ(サービス率)
例:1分間に平均3件のリクエストが来て(λ=3)、窓口は1分間に平均4件処理できる(μ=4)なら、ρ=3÷4=0.75(75%が稼働)。ρが1以上だと、来る量が処理能力を超えるので行列が無限に伸びます。安定して回すには ρ<1 が必須です。
利用率の出し方は3通り(どれも同じ値)
問題文で与えられる値に合わせて、使いやすい式を選べます。μ=1÷Ts、平均到着間隔=1÷λ なので、3つの式はすべて同じ値になります。
| 与えられた値 | 利用率の式 | 例(1秒に4件到着・1件0.2秒) |
|---|---|---|
| 到着率とサービス率 | ρ = λ ÷ μ | 4 ÷ 5 = 0.8 |
| 到着率と平均サービス時間 | ρ = λ × Ts | 4 × 0.2 = 0.8 |
| 平均到着間隔と平均サービス時間 | ρ = Ts ÷ 平均到着間隔 | 0.2 ÷ 0.25 = 0.8 |
どの式でも、単位(秒・分など)をそろえてから計算するのが注意点です。「処理時間はミリ秒、到着は1秒あたり」のように単位が混ざっている問題はよくあります。
平均待ち時間・平均応答時間の公式
M/M/1では、利用率ρと平均サービス時間(1件の処理にかかる平均時間 = 1÷μ)から、待ち時間が求まります。
| 求めるもの | 公式 |
|---|---|
| 平均サービス時間 Ts | 1 ÷ μ |
| 平均待ち時間 Tw(並んで待つ時間) | ρ ÷ (1 − ρ) × Ts |
| 平均応答時間 T(待ち+処理) | Ts ÷ (1 − ρ) (= Tw + Ts) |
先ほどの例(λ=3、μ=4、ρ=0.75)で計算してみます。平均サービス時間 Ts=1÷4=0.25分。
平均待ち時間 Tw = 0.75 ÷ (1 − 0.75) × 0.25 = 0.75 ÷ 0.25 × 0.25 = 0.75分
平均応答時間 T = 0.25 ÷ (1 − 0.75) = 0.25 ÷ 0.25 = 1分
「処理自体は0.25分なのに、混雑のせいで待ちを含めると平均1分かかる」という結果です。
平均応答時間の求め方 — 3ステップと例題
平均応答時間(待ち時間+処理時間)は、次の3ステップで求められます。
- 平均サービス時間 Ts を確認する(サービス率μで与えられたら Ts=1÷μ)
- 利用率 ρ を求める(上の3通りのうち、与えられた値に合う式で)
- 平均応答時間 T = Ts ÷ (1 − ρ) に代入する。平均待ち時間が必要なら Tw = T − Ts
例題1:到着率と処理時間が与えられる
あるサーバーは、1件のリクエストの処理に平均0.2秒かかります。リクエストは1秒あたり平均4件到着します。平均応答時間と平均待ち時間を求めてください(M/M/1とする)。
① Ts = 0.2秒
② ρ = λ × Ts = 4 × 0.2 = 0.8
③ T = 0.2 ÷ (1 − 0.8) = 0.2 ÷ 0.2 = 1.0秒、Tw = 1.0 − 0.2 = 0.8秒
例題2:平均到着間隔が与えられる(単位に注意)
平均到着間隔が50ミリ秒、1件あたりの平均処理時間が40ミリ秒のシステムの平均応答時間を求めてください。
① Ts = 40ミリ秒
② ρ = Ts ÷ 平均到着間隔 = 40 ÷ 50 = 0.8
③ T = 40 ÷ (1 − 0.8) = 40 ÷ 0.2 = 200ミリ秒(平均待ち時間は 200 − 40 = 160ミリ秒)
処理そのものは40ミリ秒なのに、利用率80%では応答に5倍の200ミリ秒かかります。
例題3:逆算する(何件まで受け付けられるか)
例題1のサーバー(Ts=0.2秒)で、平均応答時間を1.0秒以内に抑えたいとき、1秒あたり何件まで受け付けられますか。
T = Ts ÷ (1 − ρ) ≦ 1.0 より、0.2 ÷ (1 − ρ) ≦ 1.0 → 1 − ρ ≧ 0.2 → ρ ≦ 0.8
ρ = λ × Ts なので、λ ≦ 0.8 ÷ 0.2 = 4件/秒
このように「応答時間の目標から、許容できる利用率や到着数を逆算する」のが、実務のキャパシティ設計での使い方です。
待ち時間の計算ツール(M/M/1)
平均サービス時間と到着のペースを入れると、利用率・平均待ち時間・平均応答時間をその場で計算します。時間の単位はそろえてください(秒どうし、ミリ秒どうしなど)。
| 利用率 ρ | |
|---|---|
| 平均待ち時間 Tw | |
| 平均応答時間 T | |
| システム内の平均件数 L |
利用率が上がると待ち時間が急増する
ここが最重要ポイント。公式の分母が (1 − ρ) なので、ρが1に近づくほど分母が小さくなり、待ち時間が跳ね上がります。「利用率をあと少し上げただけで、体感が急に悪化する」現象の正体です。
数値で見ると一目瞭然です(Ts=1として、待ち時間 Tw=ρ/(1−ρ))。
| 利用率 ρ | 1 − ρ | 待ち時間 Tw(Ts=1) |
|---|---|---|
| 0.5 | 0.5 | 1.0 |
| 0.8 | 0.2 | 4.0 |
| 0.9 | 0.1 | 9.0 |
| 0.95 | 0.05 | 19.0 |
利用率が0.5から0.9になると、待ち時間は9倍。だからサーバー設計では「利用率を上げきらず、余裕を残す」ことが重要になります。
平均待ち時間の公式の導き方
試験では公式を覚えて使えば十分ですが、「なぜこの式になるのか」を知っておくと忘れにくくなります。ここでは3段階で導きます。
① システム内の平均件数 L = ρ ÷ (1 − ρ)
M/M/1では、システム内(待っている人+処理中の人)にちょうど n 件いる確率が (1 − ρ) × ρⁿ になることが知られています。0件の確率が 1−ρ、1件が (1−ρ)ρ、2件が (1−ρ)ρ² …と、件数が1つ増えるごとに ρ 倍ずつ小さくなります。この「件数×確率」を全部足した平均が L = ρ ÷ (1 − ρ) です。ρ=0.75なら L=0.75÷0.25=3件です。
② リトルの法則で、件数を時間に直す
リトルの法則は「平均件数 = 到着率 × 平均滞在時間(L = λ × T)」という関係です。1秒に4件来て、1件が平均2秒いるなら、中には平均8件いる、という当たり前の関係を式にしたものです。これを T について解くと、
T = L ÷ λ = ρ ÷ {(1 − ρ) × λ}
ここで ρ = λ × Ts を代入すると λ が約分されて、T = Ts ÷ (1 − ρ)(平均応答時間の公式)になります。
③ 待ち時間は、応答時間から処理時間を引く
Tw = T − Ts = Ts ÷ (1 − ρ) − Ts = ρ ÷ (1 − ρ) × Ts。これが平均待ち時間の公式です。
直感的には、「到着した人の前には平均 L = ρ/(1−ρ) 件がいて、1件あたり平均 Ts ずつかかるので、待ち時間は L × Ts」と読むこともできます(M/M/1ではこの読み方が正しく成り立ちます)。
スループットとレスポンスタイムの違い
スループットは一定時間あたりに処理できる量(例:1秒あたりの処理件数)、レスポンスタイム(応答時間)は1件が終わるまでの時間です。待ち行列の言葉でいえば、スループットは窓口が実際にさばいている件数、レスポンスタイムは平均応答時間(待ち時間+サービス時間)にあたります。
2つは同じではありません。利用率が上がると、窓口は休まず働くのでスループットは上限(サービス率)に近づきますが、行列が伸びてレスポンスタイムは急に悪化します(前述の「利用率が上がると待ち時間が急増する」のグラフ)。性能を見るときは、「たくさんさばけない」のか「1件が遅い」のかを分けて考えるのが基本です。
基本情報技術者試験ではこう出る
「利用率ρ=λ/μを求める」「平均待ち時間・平均応答時間を計算する」「利用率が上がると待ち時間がどうなるか」がよく問われます。押さえるべきは、ρ=到着率÷サービス率、平均応答時間=サービス時間÷(1−ρ)、そしてρが1に近いほど待ち時間が急増(分母が1−ρ)という3点。問題文が「平均到着間隔」「1件あたりの処理時間」で与えられたら、ρ=処理時間÷到着間隔で利用率を出すのが最短です。ネットワークやサーバーの性能設計に直結する考え方で、稼働率と信頼性設計ともあわせて押さえると、システムの性能・信頼性の全体像がつかめます。
よくある質問
Q. 到着率とは?
A. 単位時間あたりに平均何件到着するかを表す値で、記号λ(ラムダ)で表します。平均到着間隔が与えられた問題では、到着率=1÷平均到着間隔 です(くわしくは上の表)。
Q. 利用率の計算方法は?
A. ρ=λ÷μ が基本ですが、ρ=到着率×平均サービス時間、ρ=平均サービス時間÷平均到着間隔 でも同じ値になります。問題文で与えられた値に合う式を使いましょう。
Q. 到着率λ・サービス率μの単位は?
A. 「単位時間あたりの件数」です(例:1分あたり3件なら λ=3/分)。λとμの単位をそろえておけば、ρ=λ/μ は単位が打ち消し合って無次元(割合)になります。サービス時間 Ts=1/μ は「1件あたりの時間」になります。
Q. 窓口が複数(M/M/2など)だとどうなる?
A. 窓口を増やすと、同じ到着率でも1つあたりの負荷が下がり、待ち時間が大きく改善します(スーパーの複数レジと同じ)。ただし計算式は複雑になり、基本情報では原則窓口1つのM/M/1が扱われます。
Q. 実務ではどう使う?
A. サーバーやネットワーク機器のキャパシティ設計に使います。「ピーク時の到着率でも利用率が高くなりすぎないか(=待ち時間が許容範囲か)」を見積もり、余裕を持った台数・性能を選ぶ根拠にします。
まとめ
待ち行列理論(M/M/1)の要点は3つ。利用率ρ=λ/μ(=λ×Ts)、平均応答時間=サービス時間÷(1−ρ)、そしてρが1に近づくほど待ち時間が急増する。計算は「Tsを確認→ρを求める→Ts÷(1−ρ)」の3ステップで、単位をそろえることだけ注意すれば解けます。「利用率を上げすぎると急に遅くなる」という現象を、数式で説明できるようになります。性能設計の土台として押さえておきましょう。
関連ページ: 稼働率と信頼性設計 / 稼働率計算ツール / 計算量とO記法 / 記憶階層とキャッシュメモリ / 記事一覧