1 キュー長の定義と基本概念
1.1 キュー(待ち行列)の役割
通信路や計算資源は、到着する要求を必ずしも同時に処理できない。その結果、要求は一時的に保管され、処理可能になった順に取り出される。この保管領域とそこでの待ち状態を表すのが待ち行列(キュー)であり、キュー長はそこに蓄えられた「量」を指標化したものとなる。 キューはバッファ、待ち状態、リソース待ちの集合体として現れ、ネットワークではルータやスイッチの中継で、計算ではサーバやジョブ実行基盤で見られる。
1.2 キュー長の測り方(要素数・時間・容量)
キュー長は単一の尺度ではなく、実装や評価目的に応じて複数の形で表される。典型的には「要素数」「容量」「待ち時間」によって表現され、それぞれが性能へ与える意味が異なる。
1.2.1 要素数としてのキュー長
要素数としてのキュー長は、キューに滞留している要求やパケットの個数で表す。最も直感的で、システム内部で容易に計測できる場合がある。 ただし、パケットの大きさや処理単位(メッセージ、ジョブ)の粒度が一定でないと、要素数だけでは実際の負荷を比較しにくい。
1.2.2 バイト数やキロバイト換算のキュー長
容量換算のキュー長は、滞留量をバイトやキロバイトなどのデータ量で表す。ネットワーク機器ではメモリ割当や送出帯域に関係しやすく、要素数よりも実装上の意味が明確になることがある。 この尺度は「パケット長の変動」を吸収しやすく、バッファ使用量の観点で廃棄や圧迫を評価する際に有用である。
1.2.3 待ち時間換算(遅延に対応する指標)
待ち時間換算のキュー長は、キューにいることによって生じる遅延の大きさを指標として扱う。たとえば平均待ち時間や特定区間での遅延分布に基づき、「同等の遅延を与えるキュー滞留」として表現する。 通信品質や体感速度に直結するため、サービスの設計目標(遅延の上限、ばらつきの抑制)と結びつけやすい一方、計測にはタイムスタンプなどの支援が必要になりやすい。
1.3 関連用語(遅延、スループット、輻輳)
キュー長は遅延やスループット、輻輳と密接に関連する。遅延は「処理されるまでの時間」、スループットは「単位時間あたりに処理できる量」、輻輳は「処理能力に対して要求が過大になり、遅延や廃棄が増える状態」を指す。 一般に、キュー長が増えると遅延は大きくなりやすく、スループットは状況によっては維持されても、到着のばらつきや廃棄の増加によって実効的な性能が低下し得る。結果として、混雑制御や能動的管理(後述)の設計要素としてキュー長が扱われる。
2 通信技術におけるキュー長
2.1 ネットワーク機器でのキュー長(ルータ・スイッチ)
ルータやスイッチでは、パケットが転送されるまでの間にバッファへ保持される。機器内部には複数の段階があり、どの場所のキュー長を指すかで意味が変わる。一般に、取り扱い単位はパケットであり、キュー長は出力待ちや入力待ちとして現れる。
2.1.1 出力キューと入力キュー
出力キューは、ある送信先(出力ポート)に向けて送出される順を待つパケットの滞留を表す。回線の送信能力がボトルネックになりやすく、混雑時に遅延の主因となりやすい。 入力キューは、受信したパケットが内部処理や転送テーブル参照の後、出力側へ移るまでの待機を表す。入力側が詰まると、受信段での滞留が増え、上位層への影響や廃棄につながる場合がある。
2.1.2 バッファサイズとの関係
バッファはキューを構成するメモリであり、その容量が上限になる。バッファが小さいとキューはすぐ上限に達し、到着したパケットが保持されず廃棄(ドロップ)されやすい。 逆にバッファが大きい場合、即時の廃棄は減っても滞留が長引き、遅延が増大することがある。したがって、最適なバッファ容量はトラフィック特性と目的指標(遅延抑制、損失抑制、実効スループット)に依存する。
2.2 パケット通信でのキュー長の影響
キュー長はパケット通信における実効品質に影響する。特に、待機による遅延と、収容限界に起因する損失の双方が問題になる。
2.2.1 キューイング遅延
パケットはキューに滞留している間、送出されない。したがってキュー長が増えるほど、平均待ち時間やばらつきが増えやすい。 またキューイング遅延は単純な平均だけでなく、分布の裾が大きいと少数のパケットが極端な遅延を経験する。これはリアルタイム性のある通信では特に問題となる。
2.2.2 パケット廃棄(ドロップ)
キューが満杯に近づくと、新規到着パケットを保持できず廃棄が発生する。廃棄は上位の再送制御や輻輳応答を誘発し、追加の負荷を生むことがある。 廃棄が遅延を抑える方向に働く場合もあるが、再送によって総トラフィックが増えると、結果として遅延と損失の両方が悪化するケースもある。
2.3 トラフィック特性とキュー長
キュー長は到着の統計とサービス(処理)の統計の相互作用で変動する。到着が断続的か、バーストするか、種別が混在するかなどによって、同じ平均負荷でも挙動が変わる。
2.3.1 到着率とサービス率の関係
到着の平均率が処理能力を上回ると、滞留は時間とともに増加しやすい。逆にサービス率が十分に大きい場合、キューは平均的に低い水準へ戻りやすい。 重要なのは平均値だけでなく、短時間の超過が繰り返されると、キューの波形が繰り返し膨らみ、遅延や廃棄が生じ得る点である。
2.3.2 バースト性と瞬間的な増大
バースト性が高いトラフィックでは、短い時間に急激に到着が集中し、瞬間的にキューが膨らむ。平均到着率がサービス率を下回っていても、ピーク時にはバッファ上限に達しうる。 その結果、少数の時間帯での高い遅延や損失が発生し、アプリケーション体感に影響することがある。
2.3.3 トラフィック混在(優先度や種別)
通信は複数のフローやサービスクラス(優先度、要求品質)が混在する。単一の先入れ先出しで処理すると、低優先の滞留が高優先の遅延を押し上げる場合がある。 そのため、優先度に応じた割当や分離(クラス別キュー、スケジューリング)が行われ、キュー長そのものもクラスごとに評価されるようになる。
3 キュー長の評価と解析
3.1 到着・サービスのモデル化
解析では、キューへの到着過程と、サービス(取り出し・送出)過程を確率的にモデル化することが多い。到着の間隔やサービス時間のばらつき、観測単位(パケット、フレーム、ジョブ)を前提として理論値や近似式を導く。 モデル化により、平均的な滞留だけでなく、分布や安定性の条件を評価できるようになる一方、実トラフィックとの乖離があると精度が下がる。
3.2 分布としてのキュー長(平均・分散・裾)
キュー長は単なる1点の量ではなく、時間によって変動する確率変数として扱われる。平均や分散に加え、高い値がどれだけ起きるか(裾の厚さ)が性能体験に直結する。
3.2.1 平均キュー長
平均キュー長は、一定期間の観測値の平均から求める。設計や比較の初期指標として有用で、過負荷の傾向を把握するのに役立つ。 ただし、同じ平均でも変動の大きさが異なると、遅延や廃棄の発生頻度が変わるため、単独では不十分になり得る。
3.2.2 最悪時に近い評価(高パーセンタイル)
高パーセンタイル(例:95パーセンタイル、99パーセンタイル)のキュー長や待ち時間は、厳しい状況における挙動を捉えるために用いられる。特にオンラインサービスでは、平均よりも遅延スパイク時の振る舞いが問題になることがある。 裾の評価は、バーストや混在の影響が顕在化する領域であり、目標値(サービス品質の要件)との整合を取りやすい。
3.3 安定性条件と性能指標
安定性とは、時間が十分に経過してもキューが無制限に増えない状態を指す。到着がサービス能力を恒常的に上回るような場合、滞留は膨張し続ける。 性能指標としては、遅延の平均・分布、廃棄率、実効スループット、そしてキュー長の変動幅が用いられる。解析ではこれらを関係付け、設計パラメータ(容量、スケジューリング方式、制御方式)の選定に反映する。
4 キュー長制御と設計(輻輳回避)
4.1 スケジューリングとキュー制御
輻輳が発生するとキュー長は増大し、遅延や廃棄が増える。そこで、処理順序を決めるスケジューリングや、キューの使い方を調整する制御が用いられる。
4.1.1 FIFOと優先度キュー
FIFOは先着順に処理する方式で、実装が容易で挙動が読みやすい。一般に、単純な混雑では公平性を確保しやすい。 一方で、優先度キューではクラス別に待ち行列を分け、より重要なトラフィックを先にサービスする。リアルタイム性の要求がある場合には、待ちの長さや廃棄の発生場所をコントロールしやすい。
4.1.2 フロー制御の考え方
フロー制御は、送信側の発生量を抑えることでキューの増大を防ぐ考え方である。フィードバックを通じて送信レートを調整することで、受信側の収容能力を超えないようにする。 設計では、制御の応答速度と安定性(振動や過剰な減速の回避)の両立が課題になる。
4.2 輻輳回避・能動的キュー管理
能動的キュー管理は、キューが満杯になる前に制御を行い、輻輳の悪化を抑える。単なる受動的な廃棄ではなく、滞留の増え方に介入する点が特徴である。
4.2.1 閾値ベースの廃棄・制御
閾値ベースでは、キュー長やバッファ使用量が一定レベルを超えたときに、早めに廃棄や抑制を行う。これにより、満杯直前の急激な損失を避ける効果が期待できる。 閾値設計では、早すぎる抑制による必要以上の損失と、遅すぎる介入による遅延増大のバランスを取る必要がある。
2.2.2 確率的廃棄による抑制
確率的廃棄は、キューが高水準に近づくほど廃棄確率を上げる方式である。確率を用いることで急激な挙動を緩和し、トラフィック全体の応答をなだらかにする狙いがある。 廃棄が「シグナル」として機能し、送信側が輻輳を察知して調整することで、キュー長の過度な増大を抑える方向へ働き得る。
4.3 改善策の選択基準
キュー長の制御は、遅延と損失、そして効率の間にあるトレードオフを前提として選ぶ必要がある。目的指標を明確にし、それに整合する方式を優先する。
4.3.1 遅延最小化とスループット最大化のトレードオフ
遅延最小化の観点ではキューを膨らませないことが望ましいが、容量を抑えすぎると廃棄が増えて再送が発生し、結果的にスループットが落ちる可能性がある。 逆に、廃棄を避けるためにバッファを厚くすると、待ちが長くなり遅延が増える。したがって、どの指標を優先するかで最適解が変わる。
4.3.2 アプリケーション要件に応じた調整
同じネットワークでも、要求品質は用途で異なる。遅延に敏感な用途では高パーセンタイルの悪化を抑える設計が重要になり、損失に敏感な用途では廃棄率の管理がより重視される。 また、優先度付きのサービス分離を行うことで、混在時のキュー長の配分を制御し、アプリケーションごとの体験の差を縮めることができる。
4.4 実装上の注意点
理論や設計意図を実運用に落とす際には、計測と制御の整合、そして反応のタイミングが重要になる。ここを誤ると、期待した効果が得られないことがある。
4.4.1 計測タイミングと指標の整合
キュー長の観測点(入力側か出力側か、クラス別か、容量換算か要素数か)を曖昧にすると、制御ロジックと評価が噛み合わない。 さらに、遅延をキュー長から推定する場合は、タイムスタンプの取得位置と粒度が一致している必要がある。
4.4.2 フィードバック遅延の影響
制御は観測に基づいて実行されるが、観測から反映までには必ず時間差がある。フィードバック遅延が大きいと制御が遅れ、キューが過剰に膨らむ、または過剰に抑制されるなど、挙動が不安定になる恐れがある。 そのため、制御周期、応答速度、バッファの設計と合わせて、遅延を含めた系として調整する必要がある。