---
title: 複数窓口と資源プーリング
url: https://doc.liz6.com/ja/theory/03-queueing-theory/06-multiple-servers
locale: ja
area: theory
tags:
- 待ち行列理論
- 基礎理論
date: 2026-09-10
modified: 2026-09-10
description: 同じ総流量を二つの窓口で扱うとき、ランダムに別の列へ割り当てるより、一つの待機列を共有すると空き資源を使いやすくなります。ただし10 msの窓口二つが5 msの窓口一つになるわけではありません。
---

# 複数窓口と資源プーリング

同じ総流量を二つの窓口で扱うとき、ランダムに別の列へ割り当てるより、一つの待機列を共有すると空き資源を使いやすくなります。ただし10 msの窓口二つが5 msの窓口一つになるわけではありません。

## M/M/cの状態依存能力

Poisson到着、各窓口で独立な指数処理率 $\mu$、共通FCFS列、放棄なし、無限待機容量を仮定します。系内に $n$ 要求あれば総完了率は $\min(n,c)\mu$ です。

提供負荷 $a=\lambda/\mu$、一窓口あたり利用率 $\rho=a/c$ とします。定常条件は $\rho<1$。隣接状態平衡から：

$$\pi_0=\left[\sum_{n=0}^{c-1}\frac{a^n}{n!}+\frac{a^c}{c!(1-\rho)}\right]^{-1}.$$

到着者が待つのは系内数が $c$ 以上の場合で、その確率がErlang Cです。

$$C(c,a)=\frac{a^c}{c!(1-\rho)}\pi_0,\qquad
E[W_q]=\frac{C(c,a)}{c\mu-\lambda},\qquad E[T]=E[W_q]+\frac1\mu.$$

待ち時間の裾は $P(W_q>t)=C(c,a)e^{-(c\mu-\lambda)t}$。系内時間には自身の処理が加わるため、一般に総時間を率 $c\mu-\lambda$ の指数分布と扱うことはできません。

## 同じ資源で共通列と分離列を比べる

各 $\mu=100$/sの二窓口、総 $\lambda=160$/sなら、$a=1.6,\rho=0.8$、$\pi_0=1/9$、$C=32/45\approx0.7111$。共通列の平均待ちは17.78 ms、平均系内時間27.78 msです。

各到着が独立に等確率で一窓口を選ぶなら、Poisson分流により80/sのM/M/1が二つできます。それぞれ平均待ち40 ms、系内時間50 ms。同じ機器でも、空き資源の協調で待ちが変わります。

**複数窓口と資源プーリング · 実験**

各窓口は指数処理、μ=100/s、総到着率λ=cμρ。共通FCFS列と独立な一様ランダム分配を比べます。cを変えると総到着率も変わります。各比較では利用率と総能力を揃え、ロック競合は含めません。


まず二窓口で $\rho$ を変え、次に窓口数を変えます。実験では $\lambda=c\mu\rho$ に従い、$c$ と一緒に総流量も変わります。一窓口あたり利用率を固定した規模効果であり、一定の外部流量に対する増設実験ではありません。$c=1$ で曲線が一致することを確認できます。

## プーリングの実装条件

共通列から速やかに配ること、窓口が仕事に対して交換可能なことが必要です。局所性、機器種別、権限によって自由な割当ができない場合があります。ロック競合、通信、キャッシュの影響はM/M/cに含みません。ランダム分流は比較基準で、最短列、最少接続、ワークスティーリングとは異なります。

待機区のない損失モデルはErlang B、混雑時に待たせるのがErlang Cです。放棄があればErlang A、一般処理時間ならM/G/cの近似やシミュレーションを検討します。名前が似ていても公式は交換できません。

## 確認問題

1. 100/sの窓口二つを、200/sのM/M/1に置き換えられないのはなぜですか。

<details><summary>考え方</summary>

二窓口では各要求の平均処理は10 msで、要求が一つなら一窓口だけが動きます。単一200/sなら平均5 ms。状態1の完了率から既に異なり、応答分布も変わります。

</details>

2. ワーカー8本に対しデータベースの並列枠は2です。M/M/8は妥当ですか。

<details><summary>考え方</summary>

各ワーカーが独立に本当の制約資源を提供する場合に限ります。主に二つのDB枠を争っているなら、その資源を別にモデル化するかネットワークを作り、相互作用を測ります。

</details>

## 続けて読む

[NPTELの複数窓口講義](https://archive.nptel.ac.in/content/storage2/courses/117103017/module3/lec2/1.html)は状態依存完了率からErlang Cを導きます。資料間で記号が違うため、本シリーズは $a=\lambda/\mu$、$\rho=a/c$ に統一します。
