11.3 待ち行列理論
概要と動機
待ち行列理論は、待ち行列の数学的研究です。ソフトウェアエンジニアリングでは、膨大な量の実践の背後にある静かな理論です。顧客サービスの応答性、カンバンの計画(フローを改善するために仕掛かりの仕事に上限を設けるプル型の方法)、プロセス間のメッセージキュー、継続的デプロイのパイプライン。これらはすべて待ち行列で、すべて同じ法則に従います。それらの法則を理解することで、チームはリードタイム、スループット、容量、限界の近くでシステムを動かす本当のコストについて、本番で驚かされるのではなく、推論できます。この章がフローの部にあるのは、待ち行列理論がフローの正式な基礎だからです。仕事がなぜ待つのか、そして待ちを実際に何が減らすのかを説明します。
動機はこうです。待ち行列についての直感は確実に間違っていて、高くつく形で間違っています。人々は、稼働率90%で動くサーバーは「問題まで10%」と想定しますが、実際には、待ち時間は稼働率が100%に近づくにつれて非線形に爆発します。仕掛かりの仕事(WIP)を増やすとデリバリーが速くなると想定しますが、リードタイムは長くなります。平均値を軸に容量を計画し、それから変動に打ちのめされます。少しの待ち行列理論は、これらの高くつく直感を、顧客の待ち行列、タスクボード、CI/CDパイプラインのいずれにも成り立つ、少数の頑健な関係、最も重要なものとしてリトルの法則に置き換えます。
大きなチーム、企業、政府にとって、待ち行列理論は容量とフローの共有の言語で、そうでなければすれ違って話す役割をつなぎます。プロダクトマネージャーはアイデアから顧客までのリードタイムを気にします。SREはサーバーの稼働率とレイテンシを気にします。DevOpsチームはデプロイ頻度を気にします。サポートのリーダーは応答時間を気にします。これらはすべて待ち行列の指標で、それらを一つの枠組み(到着率、サービス率、稼働率、待ち時間)で表現することで、組織は容量を計画し、現実的なSLO(サービスレベル目標)を設定し、逸話ではなく数学で投資を正当化できます。
主要原則
- 待ちのあるすべては待ち行列である: チケット、タスク、メッセージ、デプロイを含みます。
- リトルの法則が錨である: システム内の項目 = 到着率 × システム内の時間(κ = λτ)。
- 稼働率と待ち時間は非線形である: 容量の最後の15%が最も高価です。
- 変動はフローの敵である: 平均は痛みを隠し、分散が待ち行列を生みます。
- 仕掛かりの仕事を減らすとリードタイムが減る: 目標は忙しさではなくフローです。
- フロー全体を測定する: 到着、サービス、成功、失敗、スキップ、待ち。
- プロセスは待ち行列の待ち行列である: 段階をモデル化し、それから制約となるものを最適化します。
推奨事項
中核の記法を学び、一貫して使う
少数の量が、あらゆる待ち行列を記述します。それらに標準化する(ギリシャ文字が慣例)ことで、チーム間の曖昧さが取り除かれます。
- λ(ラムダ)、到着率: 新しい項目がどれだけ速く入るか。
- μ(ミュー)、サービス率: 項目がどれだけ速く処理されるか。「サービス率」は曖昧に使われるので、スループットを総率(χ)、成功率(α)、失敗率(β)、スキップ率(σ)に明示的に分けることが、しばしば価値があります。χ = α + β + σ です。
- ρ(ロー)、稼働率/トラフィック強度 = λ / μ: 最も重要な単一の要約。ρ < 1 は待ち行列が空になることを、ρ ≥ 1 は際限なく育つことを意味します。
- 時間: リードタイム(τ、開始から終了)、作業時間(φ、実際の処理)、待ち時間(ω、保留)、ステップ時間(θ、完了の間)。
- ε(イプシロン)、エラー比: 失敗 ÷ 総数。
ソフトウェアでは、失敗とスキップを明示的に名指しすることが重要です。放棄された項目(あきらめる顧客、置き去りにされたカート、却下された作業チケット)は、サービスされずに待ち行列を離れ、それを「サービスされた」と見せかけることは、指標を腐敗させます。バルキング(参加しないと決める)、リニージング(待った後にあきらめる)、ジョッキーイング(待ち行列を乗り換える)を第一級の結果として追跡します。
リトルの法則に計画の錨を下ろす
リトルの法則は、安定したシステム内の項目の長期の平均数が、平均到着率に、各項目がシステムで過ごす平均時間をかけたものに等しいと述べます。κ = λ τ(古典的にはL = λW)。驚くほど一般的で(到着の分布やサービスの順序についての仮定を必要としません)、それがフロー計画の主力にします。並べ替えると、リードタイム = 仕掛かりの仕事 ÷ スループットだと教えてくれます。それがカンバンとリーンの数学的基礎です。リードタイムを短くしたく、スループットを上げられないなら、WIPを下げなければなりません。また、簡単な健全性チェックも与えます。40のチケットが開いていて、毎日8つ閉じるなら、誰がどれだけ忙しく感じていても、平均的なチケットはおよそ5日かかります。その唯一の要件は安定性です。到着が持続的に出発を超えてはならず(ρ < 1)、さもなければ待ち行列と法則の仮定が崩れます。
稼働率の非線形性を尊重する
待ち行列理論の最も重要な運用上の教訓は、応答時間が、稼働率が100%に近づくにつれて、緩やかにではなく急激に上がることです。ボブ・ウェスコットの待ち行列理論についての七つの洞察は、実際的な帰結を鮮明に捉えています。
- サービス拠点が遅いほど、計画すべきピークの稼働率は低くなる。
- 何であれ、最後の15%を使うのは非常に難しい。
- 縁に近く走るほど、間違ったときの代価が高くなる。
- 応答時間の増加は、何項目が待てるかによって制限される。
- これらは最大値ではなく平均値である。裾に備えて計画する。
- 複数のサービス拠点にわたる人間の否認の効果に注意する。
- 小さな改善を、最良の光のもとで示す。
設計上の含意は、余裕を意図して用意することです。レイテンシに敏感なシステムに70–80%の稼働率を目標にすることは無駄ではありません。予測可能な応答時間を買っているのです。これは容量計画とSLO(3.5章と9.1章)に直接情報を与えます。
プロセスを待ち行列の待ち行列としてモデル化する
実際の仕事は段階を流れ、複数段階のプロセスは単に、項目が各ステップでキューに入る待ち行列です。そのようにモデル化します。プロセスの到着率は段階1の到着率、プロセスの成功率は最終段階の成功率、プロセスのエラーとスキップの数は段階にわたる合計です。二つの一般的な形が繰り返し現れます。
- ファネル。項目数が各段階で縮みます(採用:働きかけ → 面接 → オファー。購買:閲覧 → カート → 支払い。デリバリー:統合 → UAT → 本番)。最も重要な段階を最適化します。ファネルの上部の到着を最大化し、中間のスキップ(カートの放棄)を最小化し、あるいは最終段階のエラー(悪い本番の展開)を最小化する。
- ダブルダイヤモンドのディスカバリーとデリバリーのフロー(発見 → 定義 → 開発 → 提供)。本書のフローの部が直接扱います(11.1章)。
制約となる段階(ボトルネック)を見つけて緩和することが、フローの改善が元を取る所です。制約でないものを最適化しても、待ち行列を移動させるだけです。
待ち行列の指標を、チームがすでに使うKPIにつなげる
待ち行列の量は、本書の他所のデリバリーと信頼性の指標にきれいに対応し、それが理論を学問的ではなく実際的にします。
- デリバリーのリードタイム(Dτ)、「概念から顧客まで」は、リードタイム(τ)の尺度であり、DORA(DevOps Research and Assessment)の指標です(11.2章)。
- デプロイ頻度(Dμ)はサービス率の尺度です。
- 変更失敗率(Dε)はエラー比です。
- 復旧までの時間(Rτ)は復旧のリードタイム、つまりMTTRです(9.3章)。
いくつかのMTTR(応答、修理、復旧、解決の平均時間)を区別してください。それらはインシデントの待ち行列の異なる区間を測り、日常的に混同されるからです。SLI/SLO/SLA(9.1章)を待ち行列の言葉で根づかせることで、目標を誠実で比較可能に保ちます。
トレードオフ: 長所と短所
| 決定 | 長所 | 短所 |
|---|---|---|
| システムを高い稼働率で動かす | 単位あたりのハードウェア/コストが低い | 非線形なレイテンシの爆発。急増に脆い |
| 気前の良い余裕を用意する | 予測可能なレイテンシ。変動に強い | 高い定常コスト。「使われていない」ように見える |
| WIPを制限する(カンバン) | 短いリードタイム。コンテキストスイッチが少ない | 遅く感じられる。制限を保つ規律が必要 |
| 正式な待ち行列のモデリング | 定量化された容量の決定。驚きが少ない | 学習曲線。モデルは散らかった現実を単純化する |
| 経験則だけ | 速く、数学なし | 最も高価な所(容量の近く)でまさに間違う |
繰り返されるトレードオフは効率対予測可能性です。稼働率を上げることは、突然そうでなくなるまでお金を節約し、そのとき、レイテンシ、失敗、火消しのコストが節約を小さく見せます。待ち行列理論の貢献は、その崖がどこにあるかを教えて、トレードオフが偶然ではなく選択になるようにすることです。
チームで議論すべき問い
レイテンシに敏感な各システムの明示的な稼働率の目標は何で、誰がそれを承認しましたか。 余裕は予測可能なレイテンシの意図した購入なので、たまたま届いた負荷の偶然ではなく、述べられた方針であるべきです。応答時間は非線形に上がるので、85%で動かすことはすでに高まった裾のレイテンシを意味しえますが、財務は余裕を無駄と見て稼働率を押し上げます。数字を持ち込んでください。現在の稼働率、測定されたレイテンシの曲線、最後のレイテンシのインシデントのコストを示し、各サービスの崖がどこにあるかを示します。季節的なピーク(申告期間、登録期間)を持つ企業と政府のシステムでは、平均ではなくピークについて、崖から外れる目標を設定してください。誰も稼働率の目標を所有していなければ、レイテンシのインシデントは「どこからともなく」現れ続けます。
システムのどこで待ち行列が無制限で、圧倒されたときに負荷を落とすバックプレッシャーがありませんか。 無制限の待ち行列は優雅に失敗しません。崩壊へと劣化します。到着が持続的に出発を超える(ρ >= 1)と、待ち行列が際限なく育つからです。メッセージキュー、スレッドプール、リクエストバッファの目録を作り、到着率がサービス率を超えたときにそれぞれで何が起こるかを尋ねてください。負荷を落とすか、バックプレッシャーをかけるか、倒れるか。これは、一つの飽和した下流がサービスにわたって連鎖しうる企業の規模で、特に重要です。負荷テストの結果、あるいは待ち行列が詰まった過去のインシデントを持ち込み、システムが余分な仕事を拒否したか、すべてを抱えようとしたかを確認します。修正は、過負荷が倒れるのではなく落とすよう、リトルの法則から導かれたタイムアウトを伴う、明示的なバックプレッシャーのある有界の待ち行列です。
アイデアから本番までのフローを待ち行列の待ち行列としてモデル化していて、改善は本当の制約に向けられていますか。 複数段階のプロセスは、項目が各段階でキューに入る待ち行列であり、制約となる段階以外を最適化しても、待ち行列を移動させるだけです。デリバリーのファネル(統合からUAT、本番、あるいは発見から定義、開発、提供)を地図にし、各段階での到着、サービス、待ち、スキップの率を測って、仕事が実際にどこに積み上がるかを見つけます。チームは日常的にボトルネックではなく、最もよく理解している段階を最適化し、それは労力を費やして何も動かしません。ボトルネックはしばしば作業の状態ではなく待ちの状態(レビュー、承認、環境の利用可能性)なので、勘ではなく段階ごとの待ち時間のデータを持ち込んでください。制約がわかったら、そこに狙いを定め、制約でないものは放っておきます。
リトルの法則でWIPの制限を設定していますか。それとも、より多くの規律だけが直すリードタイムを治すために容量を追加していますか。 リトルの法則は、リードタイムが仕掛かりの仕事をスループットで割ったものに等しいと言うので、スループットを上げられないなら、より短いリードタイムのために残るてこは、WIPを下げることだけで、それは抑制以外何のコストもかかりません。相反する引力は本物です。仕掛かりの仕事に上限を設けることは遅く遊んでいるように感じられ、圧力のもとの管理者は、チームに始めるのを減らして終えるのを増やせと言うより、雇用やハードウェアの購入を望みます。厳しい数字を持ち込んでください。段階ごとの開いている項目と完了率で、暗黙の平均リードタイムを計算し、それを人々が信じているものと比べます。その隔たりは通常大きく恥ずかしいものです。大きな企業や機関では、リードタイムの修正として正当化された採用や調達の要望は、まずこの算術に照らしてテストされるべきです。WIPを増やす人員の増加は、短くするはずのまさにそのリードタイムを長くしうるからです。
平均を軸に容量を計画していますか。それとも、実際に待ち行列を生む変動を定量化しましたか。 待ち行列は平均ではなく分散から生まれるので、同じ平均負荷の二つのシステムは、一方が突発的な到着や長い裾のサービス時間を持つなら、まったく異なる振る舞いをしえます。緊張は、平均が集めやすく報告して安心させるのに対し、分散と裾は測りにくく、状況の更新では歓迎されないことです。平均ではなく分布を持ち込んでください。到着の突発性、95パーセンタイルと99パーセンタイルのサービスと待ち時間、仕事を急増に集中させるバッチの大きさ。予測可能な急増(申告期間、給与の処理、登録期間、四半期末の負荷)を持つ企業と政府のシステムでは、年間平均にサイズ化された設計は、公衆が見ているまさにその時に失敗するので、バッファと稼働率の目標を、ピーク期間の分散から計画してください。
どの待ち行列が、仕事がサービスされたかのように放棄と拒否を静かに数えていて、それは何の満たされない需要を隠していますか。 バルクする、リニージする、あるいは拒否された項目は、処理されずに待ち行列を離れ、それを「サービスされた」と記録することは、スループット、エラー比、容量計画を一度に腐敗させます。相反する考慮は、「応答された電話」や「閉じられたチケット」が、ダッシュボードで「あきらめた発信者」より良く見えることで、誠実な数字は誰も進んで表面化させないものです。真の需要が可視になるよう、スキップ率(σ)、バルキングとリニージングの数、提供された負荷とサービスされた負荷の差を持ち込んでください。これは政府のサービス提供で特に重要です。電話の待ち行列や給付の申請をあきらめた市民は、解決されたケースではなく満たされない義務であり、それらを処理済みと報告することは、パフォーマンスを誤って述べ、公衆に負う容量を過小に述べるからです。
セクター別の視点
スタートアップ。 正式な待ち行列のモデリングに割く時間はなく、必要もありません。最初に最も安い二つの勝利に手を伸ばしてください。積み残しにリトルの法則を適用して、WIPが暗示する本当のリードタイムを見ること、そして存在しないかもしれないボトルネックに対して雇う前に、カンバンボードで仕事が積み上がる段階を見ること。レイテンシに敏感な経路では、調整するのではなく余裕を残して稼働率を崖から遠ざけてください。成長の急増の間の停止は、少しの遊んでいる容量よりはるかに高くつくからです。
小規模事業者。 社内に待ち行列の専門家はいないので、モデルを築くのではなく指標を買ってください。到着率、待ち時間、放棄をすでに報告するヘルプデスク、メッセージブローカー、ホスティングのプラットフォームを選び、それらを導き出すのではなく、その数字を読みます。決定を二つの症状を見ることとして枠づけてください。忙しくなるにつれて非線形に上がる待ちと、サービスされる前にあきらめる顧客。失った顧客は、小さな事業に最も痛い待ち行列のコストだからです。
大企業。 仕事は、待ち行列の考え方を多くのチームにわたる共有の規律にすることです。一つの合意された記法(λ、μ、ρ、リードタイム)、一貫したWIPと稼働率の余裕の方針、飽和した下流がサービスにわたって連鎖しないバックプレッシャーの標準。SLOと容量を、推測ではなく待ち行列の分析から設定し、どの単一のチームも孤立して熱く動かないよう、待ち行列をベースラインとレビューを伴うポートフォリオとして管理します。余裕の目標が誰かが所有する文書化された決定になるよう、分析を容量のガバナンスと監査に組み込みます。
政府。 調達、透明性、公的な説明責任があらゆる容量の選択を形づくります。コンタクトセンターと市民向けのシステムを、年間平均ではなくピーク期間の分散(申告期間、登録期間)でサイズ化し、需要が急増したときに稼働率を崖から遠ざけておくよう人員を配置します。バルキングとリニージングを、「応答された電話」の中に隠すのではなく、満たされない公共の需要として追跡し、容量の支出を、待ち時間のリトルの法則による見積もりで正当化してください。それが監査人と選挙で選ばれた職員に、逸話ではなく、擁護できる数学に裏づけられた論拠を与えます。
事例
スタートアップ。 サポートの積み残しに溺れる5人のSaaSチームは、もう一人のエージェントを雇う必要があると想定します。お金を使う前に、リトルの法則を適用します。60の開いているチケットと日に12の閉じるチケットは、平均的なチケットがおよそ5日待つことを意味し、それは怒りのメールと一致します。カンバンボードを見ていて、チケットがサポートではなくエンジニアリングを待って積み上がっていることに気づくので、仕掛かりの仕事に上限を設け、バグ報告をキューに入れる代わりにスプリントにまっすぐ回します。リードタイムは新しい雇用なしに2日未満に下がり、浮いた予算を実際のボトルネックに使います。
大企業。 認可サービスのサイズ化を行う決済プラットフォームは、λ ≈ 850リクエスト/秒、ノードあたりμ ≈ 200/秒と測ります。素朴にはそれは約5ノード(ρ = 0.85)ですが、ρ = 0.85がすでに急激に高まった裾のレイテンシを意味すると知っているので、チームはρ ≈ 0.65にプロビジョニングし、リトルの法則を使って処理中のリクエスト数を予測し、キューの深さとタイムアウトを設定します。かつて「どこからともなく」現れたピークシーズンのインシデントは消えます。チームがもはや曲線の急な部分で運用していなかったからです。
政府。 税務当局のコンタクトセンターは、申告期間のサポートを待ち行列としてモデル化します。到着の急増(λ)、エージェントの容量(μ)、そして決定的に、長い保留の後に放棄する市民のスキップ率(σ)。「応答された電話」だけでなくバルキングとリニージングを追跡することで、リーダーシップは真の満たされない需要を見て、ピーク時に稼働率を崖から遠ざけるよう人員を配置し、追加の容量を待ち時間のリトルの法則による見積もりで正当化します。それは公的支出への、逸話ではなく、擁護できる数学に裏づけられた論拠です。
ビジネスケース: 動機、ROI、TCO
待ち行列理論は、二つの高価な間違いを防ぐことで元を取ります。過剰なプロビジョニング(必要のなかった遊んでいる容量に払う)と、はるかに損害の大きい崖の近くでの過小なプロビジョニング(小さな負荷の増加が、大きなレイテンシ、破られたSLA、放棄された顧客、緊急支出を引き起こす)。100%の稼働率の近くで動かすコストは非線形なので、「もう少し負荷を加える」だけの節約は小さく、下振れは壊滅的で、まさに少しの数学が意図した決定に変える非対称性です。見返りは、避けられた停止、満たされたSLA、そうでなければバルクした定着する顧客、より穏やかなオンコールのローテーションで測られます。
総所有コストでは、枠組みは採用が安く(ツールではなく知識です)、大きな組織がシステムの寿命にわたって下す、容量、レイテンシ、フローのほぼすべての決定を改善します。リトルの法則とWIPの制限は、何も買わずにリードタイムを減らし(純粋なプロセスの勝利)、稼働率の規律は、控えめで予測可能な定常コストを、高価で予測できない失敗の排除と交換します。リーダーシップに論拠を示すには、最近のレイテンシのインシデントを稼働率の曲線に翻訳し、余裕の目標がそれをどう防いだかを示し、リトルの法則を使ってWIPの削減をより速いデリバリーに直接つなげてください。
アンチパターンと落とし穴
- 平均を軸にした容量計画: 実際に待ち行列を生む分散を無視すること。
- 熱く動かす: レイテンシに敏感なシステムで90%以上の稼働率を目標にし、裾のレイテンシに衝撃を受けること。
- スキップをサービスとして数える: 放棄された顧客や却下されたチケットを処理済みとして扱い、指標を腐敗させること。
- WIPを積み上げる: 忙しさをスループットと取り違え、リードタイムを長くすること。
- ボトルネックでないものの最適化: 制約でない段階を改善し、待ち行列を別の場所に移すこと。
- MTTRの混同: 「復旧」を報告しながら「修理」を測る、あるいはその逆。
- 無制限の待ち行列: バックプレッシャーがなく、過負荷のシステムが負荷を落とす代わりに崩壊へと劣化すること。
- 最大値としての平均: 平均に合わせて設計し、裾でページングされること。
成熟度モデル
- レベル1、開始: 待ち行列(チケット、タスク、メッセージ、デプロイ)は管理されず反応的です。容量は推測され、稼働率は負荷が着地する所で動き、レイテンシの問題はチームを驚かせて事後に火消しされます。
- レベル2、発展: 少数のチームが基本的な指標(スループット、平均待ち)を集めますが、平均として読み、一貫せずに適用します。一部のグループはWIPに上限を設けたり余裕を残したりし、他は熱く動かします。共有の記法がないので、実践はチーム間で伝わりません。
- レベル3、標準化: 共通の記法(λ、μ、ρ、リードタイム)が文書化されて組織全体で徹底されます。WIPの制限と稼働率の余裕の目標が、すべてのレイテンシに敏感なシステムで意図して設定され、複数のMTTRが区別され、バックプレッシャーを伴う有界の待ち行列が、サービスにわたる既定です。
- レベル4、管理: 待ち行列が、ベースラインに対して測定され制御されます。到着率、サービス率、稼働率、裾のレイテンシ(p95/p99)、リードタイムが定義された目標とSLOに追跡され、キューの深さ、タイムアウト、余裕は推測ではなくリトルの法則から導かれ、提供された負荷とサービスされた負荷が区別されるようバルキング、リニージング、スキップ率が数えられ、容量の決定は感覚ではなくこの証拠でレビューされます。
- レベル5、オーケストレーション: フローは継続的に待ち行列の待ち行列としてモデル化されます。ボトルネックは継続的な実践として特定され緩和され、容量、SLO、バックプレッシャーは移り変わる需要と変動に適応し、待ち行列の指標はDORAと事業のKPIに直接結びつき、組織は負荷とリスクの状況が変わるにつれて、フロー全体にわたって容量を再均衡させます。
議論のためのアイデア
- レイテンシに敏感なシステムは実際にどの稼働率で動いていて、その崖はどこにありますか。
- 現在の積み残しにリトルの法則を適用してください。WIP ÷ スループットが示すリードタイムは何で、現実と一致しますか。
- どの待ち行列が、「スキップ」(放棄、拒否)をサービスされたかのように静かに数えていますか。
- WIPを下げることが、容量を加えるよりも安くリードタイムを短くするのはどこですか。
- アイデアから本番までのフローで、本当のボトルネックはどの段階で、改善はそこに向けられていますか。
- ダッシュボードは、裾が実際にあなたを傷つけるのに、平均を示していませんか。
要点
- 顧客の待ち行列、カンバンボード、メッセージキュー、デプロイのパイプラインはすべて、同じ法則に統べられる待ち行列です。
- リトルの法則(κ = λτ)がフロー計画の錨です。リードタイム = WIP ÷ スループット。
- 稼働率と待ち時間は非線形です。余裕を用意します。最後の15%が最も高価です。
- 全体像を追跡します。到着、サービス、成功、失敗とスキップ、待ち。放棄を隠さないでください。
- プロセスを待ち行列の待ち行列としてモデル化し、忙しい仕事ではなくボトルネックを直します。
- 待ち行列の指標はDORA/フローとSLI/SLOの尺度(11.1章、11.2章、9.1章)に直接対応し、組織全体に容量とフローの一つの言語を与えます。
参考文献とさらなる読み物
- Bob Wescott, Seven Insights into Queueing Theory (and The Every Computer Performance Book).
- John D. C. Little, “A Proof for the Queuing Formula L = λW” (1961): Little’s Law.
- Nicole Forsgren, Jez Humble, Gene Kim, Accelerate: flow-based DORA metrics that align with queue KPIs.
- Donald Reinertsen, The Principles of Product Development Flow: queues, batch size, and WIP economics.
- Daniel Vacanti, Actionable Agile Metrics for Predictability: Little’s Law applied to kanban.
- Joel Parker Henderson, Queueing Theory: notation, KPIs, and queue-of-queues (github.com/joelparkerhenderson/queueing-theory).
- Dan Slimmon, “The most important thing to understand about queues” (2016).
- Wikipedia: “Queueing theory,” “M/M/1 queue,” “Little’s law,” “Markov chain.”