株式会社ジオデータ開発 ロゴ
株式会社ジオデータ開発GEO DATA DEVELOPMENT Inc.
システム性能・待ち行列理論

M/M/1待ち行列モデルとは?仕組みと待ち時間を図解

M/M/1待ち行列モデルを、動く処理フローと操作できるグラフで解説。ポアソン到着、指数分布、サーバー利用率、平均待ち時間の公式から実際の性能設計まで理解できます。

まず、これだけ理解すればOK

コンピュータが処理できる量に対して、 仕事が大量に届くと順番待ちが発生します。

M/M/1は、そんな待ち時間を 数学的に計算するためのモデルです。

サーバー利用率が100%に近づくほど、 平均待ち時間は急増する。

1. なぜ待ち行列ができるのか?

例えば、1度に1件のリクエストしか処理できない サーバーがあるとします。

処理中に別のリクエストが届くと、 後から届いたものは待たなければなりません。

INTERACTIVE LAB 01

リクエストはどこで待つ?

3件のリクエストを順番に処理してみましょう。

ステップ 1 / 5

t = 0.0 秒

待ち行列

処理開始前

空

サーバー

同時に1件

A

処理完了

処理済み

空

Aが到着し、すぐ処理開始

サーバーが空いているため、Aは待たずに処理されます。

3件の処理時間と待ち時間

リクエスト A待機 0秒 / 処理 2秒
処理
リクエスト B待機 1秒 / 処理 2秒
待ち
処理
リクエスト C待機 2.5秒 / 処理 2秒
待ち
処理
待ち時間処理時間到着前

この例は到着時刻と処理時間を固定した概念図です。 M/M/1の到着過程や指数分布を再現した 確率シミュレーションではありません。

このように、仕事が到着してから 処理開始まで順番を待つ仕組みが「待ち行列」です。

2. 待ち時間・処理時間・応答時間

この3つは似ていますが、 計算上は明確に区別する必要があります。

待ち時間処理時間
待ち時間
処理時間
到着処理開始処理完了

応答時間 = 待ち時間 + 処理時間

色分けと長さは説明用の例です。

待ち時間

処理を開始するまでにキューで待つ時間

処理時間

サーバーが実際に仕事を処理する時間

応答時間

到着から処理完了までの合計時間

3. M/M/1という名前の意味

M/M/1は、仕事の到着、処理時間、 処理装置の数という3つの特徴を表しています。

M

到着の仕方

一定時間内の到着件数がポアソン分布に従います。到着間隔は指数分布です。

M

処理時間

1件の処理時間が指数分布に従います。毎回同じ時間とは限りません。

1

処理装置の数

サーバーが1台で、同時に1件ずつ処理することを意味します。

ポアソン分布と指数分布の違い

ポアソン分布

「1分間に何件到着するか」のような、 一定時間内の発生件数を表します。

指数分布

「次の到着まで何秒かかるか」や、 ランダムな処理時間を表します。

さらに、基本的なM/M/1では待ち行列の容量に 上限がなく、先着順で処理すると仮定します。

4. 利用率が高いと、なぜ待つのか?

サーバーの利用率とは、 長期的に見てサーバーが処理で忙しくしている 時間の割合です。

利用率 25%空き時間 75%

処理装置が空いている時間が比較的多い

利用率 50%空き時間 50%

忙しい時間と空いている時間が半々

利用率 90%空き時間 10%

ほとんどの時間、処理装置が使用中

利用率90%でも、平均すると10%の空き時間があります。 しかし到着時刻や処理時間にはばらつきがあるため、 リクエストが重なり、長い順番待ちが発生し得ます。

この関係を実際に操作して確認してみましょう。

INTERACTIVE LAB 02

利用率を上げると、待ち時間はどうなる?

スライダーで利用率を変更し、 M/M/1の理論平均値を比較できます。

50%
0%50%95%

平均処理時間

1.00秒

実際の処理に使う時間

平均待ち時間

1.00秒

処理が始まるまでの時間

平均応答時間

2.00秒

待ち時間 + 処理時間

利用率と平均待ち時間の曲線

縦軸:平均待ち時間 ÷ 平均処理時間

0倍5倍10倍15倍20倍0%25%50%75%95%サーバー利用率 →

待ち時間は処理時間の 1.00倍

ちょうど50%。平均待ち時間と平均処理時間が等しくなります。

1秒あたりの処理能力と到着量

利用率は「平均到着率 ÷ 平均処理率」です。

平均処理率 μ1.00 件/秒
平均到着率 λ0.50 件/秒

現在の処理率は毎秒 1.00 件、 到着率は毎秒 0.50 件です。 平均到着率が処理能力に近づくほど、 処理待ちが増えやすくなります。

数式に代入すると

Wq = [ρ / (1 − ρ)] × T

= [0.50 / (1 − 0.50)] × 1

= 1.00 秒

待ち行列内の平均リクエスト数

0.50 件

Lq = ρ² / (1 − ρ)

M/M/1の前提条件が成立し、0 ≤ ρ < 1 の定常状態にあるときの理論平均値です。 利用率100%では定常的な有限の平均待ち時間は 成立しません。

5. 平均待ち時間の計算式

M/M/1の定常状態では、平均待ち時間を 次の式で計算できます。

平均待ち時間

Wq = ρ / (1 − ρ) × T

ρ:サーバー利用率
T:1件あたりの平均処理時間

例えば利用率50%の場合、 平均待ち時間と平均処理時間が等しくなります。

Wq = 0.5 / (1 − 0.5) × T

= 0.5 / 0.5 × T

= 1 × T

つまり、平均処理時間が1秒なら 平均待ち時間も1秒です。

利用率待ち時間 ÷ 処理時間
25%約0.33倍
50%1倍
75%3倍
80%4倍
90%9倍
95%19倍

6. システム設計ではどう活用する?

待ち行列理論は、処理量と応答性能の関係を 理解するための基礎になります。

API・アプリケーションサーバー

大量のリクエストが集中した際に、処理待ちがどのように増えるかを考える手掛かりになります。

バックグラウンドジョブ

ジョブの到着量とワーカーの処理能力を比較し、キューが増えやすい条件を考えられます。

データベース処理

直列化された処理部分がボトルネックになると、待ち時間が大きくなることがあります。

性能・容量計画

利用率だけでなく、待ち時間と応答時間にも余裕を持たせる設計が重要です。

注意:実際のシステムが必ずM/M/1になるわけではない

複数ワーカー、タイムアウト、優先度、 リトライ、到着の偏り、処理時間の分布などにより 挙動は変わります。 例えば処理時間が常に一定なら、 M/M/1ではなくM/D/1など別のモデルを 検討する必要があります。

7. 関連する重要な考え方

到着率 λ と処理率 μ

λは単位時間あたりの平均到着件数、 μはサーバーが稼働中に単位時間あたり 処理できる平均件数です。 利用率は ρ = λ / μ と表せます。

定常状態の条件

平均到着率が平均処理率を下回る λ < μ の場合に、 M/M/1で有限の定常平均値を求められます。 λ ≥ μ では有限の定常平均待ち時間を 仮定できません。

Littleの法則

定常状態の平均待ち行列長Lqと 平均待ち時間Wqには、 Lq = λ × Wq の関係があります。 待ち時間が増えるほど、 キュー内に存在する平均件数も増えます。

8. 理解を確認する

CHECK YOUR UNDERSTANDING

利用率75%の場合

平均処理時間が2秒、 利用率が75%のとき、 平均待ち時間は何秒でしょうか?

計算結果と解説を見る

Wq = 0.75 / (1 − 0.75) × 2

= 0.75 / 0.25 × 2

= 6秒

応答時間は待ち時間6秒と処理時間2秒の 合計で8秒です。

まとめ

M/M/1は、1台の処理装置とランダムな到着・ 処理時間を前提にした待ち行列モデルです。

サーバー利用率が高くなるほど、 平均待ち時間は急増します。 システムを設計するときは、 処理能力を使い切ることだけでなく、 どれだけ待たせるかにも注目する必要があります。

参考文献

  1. [1]
  2. [2]