Computer systems design is full of conundrums:

Given a choice between a single machine with speed s, or n machines each with speed s/n, which should we choose?

If both the arrival rate and service rate double, will the mean response time stay the same?

Should systems really aim to balance load, or is this a convenient myth?

If a scheduling policy favors one set of jobs, does it necessarily hurt some other jobs, or are these "conservation laws" being misinterpreted?

Do greedy, shortest-delay, routing strategies make sense in a server farm, or is what's good for the individual disastrous for the system as a whole?

How do high job size variability and heavy-tailed workloads affect the choice of a scheduling policy?

How should one trade off energy and delay in designing a computer system?

If 12 servers are needed to meet delay guarantees when the arrival rate is 9 jobs/sec, will we need 12,000 servers when the arrival rate is 9,000 jobs/sec?

Tackling the questions that systems designers care about, this book
brings queueing theory decisively back to computer science. The book
is written with computer scientists and engineers in mind and is full
of examples from computer systems, as well as manufacturing and
operations research. Fun and readable, the book is highly
approachable, even for undergraduates, while still being thoroughly
rigorous and also covering a much wider span of topics than many
queueing books. Readers benefit from a lively mix of motivation and
intuition, with illustrations, examples, and more than 300 exercises,
all while acquiring the skills needed to model, analyze, and design
large-scale systems with good performance and low cost. The exercises
are an important feature, teaching research-level counterintuitive
lessons in the design of computer systems. The goal is to train
readers not only to customize existing analyses but also to invent
their own.

Table of Contents

Part I: Introduction to Queueing

1 Motivating Examples of the Power of Analytical Modeling

1.1 What is Queueing Theory?

1.2 Examples of the Power of Queueing Theory

2 Queueing Theory Terminology

2.1 Where We Are Heading

2.2 The Single-Server Network

2.3 Classification of Queueing Networks

2.4 Open Networks

2.5 More Metrics: Throughput and Utilization

2.6 Closed Networks

2.6.1 Interactive (Terminal-Driven) System

2.6.2 Batch Systems

2.6.3 Throughput in a Closed System

2.7 Differences between Closed and Open Networks

2.7.1 A Question on Modeling

2.8 Related Readings

2.9 Exercises

Part II: Necessary Probability Background

3 Probability Review

3.1 Sample Space and Events

3.2 Probability Defined on Events

3.3 Conditional Probabilities on Events

3.4 Independent Events and Conditionally Independent Events

3.5 Law of Total Probability

3.6 Bayes Law

3.7 Discrete versus Continuous Random Variables

3.8 Probabilities and Densities

3.8.1 Discrete: Probability Mass Function

3.8.2 Continuous: Probability Density Function

3.9 Expectation and Variance

3.10 Joint Probabilities and Independence

3.11 Conditional Probabilities and Expectations

3.12 Probabilities and Expectations via Conditioning

3.13 Linearity of Expectation

3.14 Normal Distribution

3.14.1 Linear Transformation Property

3.14.2 Central Limit Theorem

3.15 Sum of a Random Number of Random Variables

3.16 Exercises

4 Generating Random Variables

4.1 Inverse Transform Method

4.1.1 The Continuous Case

4.1.2 The Discrete Case

4.2 Accept/Reject Method

4.2.1 Discrete Case

4.2.2 Continuous Case

4.2.3 Some Hard Problems

4.3 Readings

4.4 Exercises

5 Sample Paths, Convergence, and Averages

5.1 Convergence

5.2 Strong and Weak Laws of Large Numbers

5.3 Time Average versus Ensemble Average

5.3.1 Motivation

5.3.2 Definition

5.3.3 Interpretation

5.3.4 Equivalence

5.3.5 Simulation

5.3.6 Average Time in System

5.4 Related readings

5.5 Exercises

Part III: The Predictive Power of Simple Operational Laws: What-If Questions and Answers