Performance Measurement
Performance measurement connects three fundamental quantities — throughput, response time, and concurrency — through operational laws derived from observable parameters. This page covers the mathematical foundations that underpin all performance analysis, from Little’s Law through queuing theory to scalability modeling.
Operational Analysis
Operational analysis evaluates system performance using measured parameters and established mathematical relationships, without requiring assumptions about probability distributions [1].
Observed vs Derived Parameters
| Type | Parameter | Symbol | Definition |
|---|---|---|---|
| Observed | Arrivals | A | Total requests entering the system |
| Observed | Completions | C | Total requests leaving the system |
| Observed | Busy time | B | Time the resource is not idle |
| Observed | Observation period | T | Duration of measurement |
| Derived | Throughput | X = C/T | Completions per unit time |
| Derived | Utilization | U = B/T | Fraction of time busy |
| Derived | Service time | S = B/C | Average time per completion |
| Derived | Arrival rate | λ = A/T | Arrivals per unit time |
The key assumption is job flow balance: A ≈ C over the observation period [2].
The Six Operational Laws
Hillston formalizes six laws relating these parameters [2]:
| Law | Formula | Meaning |
|---|---|---|
| Little’s Law | L = X · W | Avg items = throughput × avg time in system |
| Utilization Law | Ui = X · Di | Utilization = throughput × service demand |
| Service Demand Law | Di = Si · Vi | Demand = service time × visit count |
| Forced Flow Law | Xi = X · Vi | Resource throughput = system throughput × visits |
| Residence Time Law | W = Σ Wi · Vi | Total time = sum of weighted resource times |
| Interactive Response Time | R = L/X − Z | Response time = residence time minus think time |
Little’s Law: L = λW
Little’s Law is the single most important equation in performance analysis [3] [4]:
“The results are remarkably free of specific assumptions about arrival and service distributions, independence of interarrival times, number of channels, queue discipline, etc.” — Little (1961) [3]
Proof Intuition (Sample Path)
The 2008 proof by Little and Graves uses a geometric argument [4]:
- Plot cumulative arrivals A(t) and departures D(t) over time
- The area between the two curves can be computed two ways:
- Integrating the number of items over time: L × T
- Summing individual wait times: N × W
- Since both describe the same area: L = (N/T) × W = λW
Practical Examples
| System | Known Values | Derived |
|---|---|---|
| Wine cellar | L=160 bottles, λ=96/yr | W = 160/96 = 1.67 years |
| Semiconductor fab | λ=1000 wafers/day, L=45000 WIP | W = 45000/1000 = 45 days |
| Hospital ward | λ=5 births/day, W=2.5 days | L = 5×2.5 = 12.5 beds |
Non-Normal Distributions: Why Percentiles Beat Averages
Performance data is fundamentally non-normal with long right tails [1] [5]:
“Operational analysis leverages statistical means, or averages. This provides both strength and weakness. The weakness comes in the form of loss of information and the fact that means are influenced by outliers.” — Wilson (2008) [1]
The Problem with Averages
A system with mean response time of 1 second could mean:
- Good: All requests between 0.8s and 1.2s (low variance)
- Terrible: 90% at 0.5s, 10% at 5.5s (high variance, same mean)
Jain warns: “An average response time of 1 second with a range of 0.5 to 1.5 is very different from an average of 1 second with a range of 0.1 to 10” [6].
Percentile Guidelines
| Metric | Use Case |
|---|---|
| p50 (median) | Typical user experience |
| p90 | “What most users actually perceive” [1] |
| p99 | Tail latency — important for SLAs |
| p99.9 | Critical for large-scale systems [7] |
Wilson recommends the 90th percentile over the mean as the primary reporting metric, and identifies practical thresholds [1]:
| Resource | Bottleneck Threshold |
|---|---|
| CPU utilization | >70% average or queue >2/processor |
| Disk utilization | >20% |
| Performance change | <10% may be noise, not real improvement |
The Rule of 8
Human productivity drops dramatically when system response times exceed 8 seconds [1] [8]. Users lose their train of thought, context-switch to other tasks, or abandon the interaction entirely.
Queuing Theory: The Hockey Stick Curve
When utilization increases, response time follows a characteristic hockey stick shape — flat at low load, then climbing exponentially [9]:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"title": {"text": "Response Time vs Utilization (M/M/1)", "fontSize": 14},
"width": 450,
"height": 280,
"data": {
"values": [
{"u": 0.05, "rt": 1.05}, {"u": 0.10, "rt": 1.11}, {"u": 0.15, "rt": 1.18},
{"u": 0.20, "rt": 1.25}, {"u": 0.25, "rt": 1.33}, {"u": 0.30, "rt": 1.43},
{"u": 0.35, "rt": 1.54}, {"u": 0.40, "rt": 1.67}, {"u": 0.45, "rt": 1.82},
{"u": 0.50, "rt": 2.00}, {"u": 0.55, "rt": 2.22}, {"u": 0.60, "rt": 2.50},
{"u": 0.65, "rt": 2.86}, {"u": 0.70, "rt": 3.33}, {"u": 0.75, "rt": 4.00},
{"u": 0.80, "rt": 5.00}, {"u": 0.85, "rt": 6.67}, {"u": 0.90, "rt": 10.0},
{"u": 0.95, "rt": 20.0}
]
},
"layer": [
{
"mark": {"type": "line", "strokeWidth": 3, "interpolate": "monotone"},
"encoding": {
"x": {"field": "u", "type": "quantitative", "title": "Utilization (%)", "scale": {"domain": [0, 1]}, "axis": {"format": ".0%"}},
"y": {"field": "rt", "type": "quantitative", "title": "Response Time (× service time)", "scale": {"domain": [0, 22]}},
"color": {"value": "#d32f2f"}
}
},
{
"data": {"values": [{"u": 0.80, "rt": 5.0}]},
"mark": {"type": "point", "size": 120, "filled": true},
"encoding": {
"x": {"field": "u", "type": "quantitative"},
"y": {"field": "rt", "type": "quantitative"},
"color": {"value": "#FF9800"}
}
},
{
"data": {"values": [{"u": 0.82, "rt": 7.0, "label": "← 80% \"elbow\""}]},
"mark": {"type": "text", "fontSize": 12, "align": "left", "fontWeight": "bold"},
"encoding": {
"x": {"field": "u", "type": "quantitative"},
"y": {"field": "rt", "type": "quantitative"},
"text": {"field": "label"},
"color": {"value": "#FF9800"}
}
}
],
"config": {"font": "Tahoma, sans-serif", "view": {"stroke": null}}
}
The formula for M/M/1 response time: R = S / (1 − U) where S is service time and U is utilization [9].
The Three-Zone Conceptual Model
Haines (2006) presents a complementary conceptual view showing three metrics simultaneously [10]:
| Zone | Utilization (U) | Throughput (X) | Response Time (R) |
|---|---|---|---|
| Light Load | Rising linearly | Rising linearly | Flat, near-minimal |
| Heavy Load | Saturated (~100%) | Plateau (max throughput) | Starting to climb |
| Buckle Zone | Stays at 100% | Falling (resource thrashing) | Explodes exponentially |
The boundaries shift right with faster/more CPUs. The mathematical M/M/1 chart above shows the R curve in isolation; the three-zone model shows how all three metrics interact under increasing load.
Key Queuing Insights
| Concept | Implication |
|---|---|
| The “elbow” | ~80% utilization — response time degrades sharply [9] |
| 1×M/M/4 vs 4×M/M/1 | Single queue, multiple servers always outperforms multiple independent queues [9] |
| Faster CPUs | Shift curve down and to the right |
| More CPUs | Shift curve to the right only |
| More arrivals | Slide along the existing curve (no shift) |
Kendall’s Notation
Queuing systems are described as A/B/m where A = arrival distribution, B = service distribution, m = number of servers [9]:
| Symbol | Meaning |
|---|---|
| M | Markovian (exponential, memoryless) |
| D | Deterministic (constant) |
| G | General (any distribution) |
Example: M/M/4 = Poisson arrivals, exponential service, 4 servers.
Bottleneck Analysis
The bottleneck resource has the greatest service demand Dmax = max{Di} [2]. It limits the entire system because it reaches 100% utilization first.
Asymptotic Bounds
| Bound | Formula | Interpretation |
|---|---|---|
| Throughput upper bound | X ≤ min{1/Dmax, N/(D+Z)} | Can’t exceed bottleneck capacity |
| Response time lower bound | R ≥ max{D, N·Dmax − Z} | Can’t be faster than total service demand |
The balanced system principle: maximum scalable performance is achieved when all resources have equal utilization [11]. An unbalanced system wastes capacity on non-bottleneck resources.
Scalability Laws
Three laws form a progression of realism for modeling how systems scale:
Amdahl’s Law (1967)
S(N) = 1 / (f + (1−f)/N) [12]
Where f is the serial fraction of work. The ceiling is 1/f — with 40% serial overhead (α≈0.4), maximum speedup is only 2.5× regardless of how many processors you add [12].
Gustafson’s Law (1988)
S = N + (1−N) × s [13]
Gustafson’s key insight: real users scale problem size with processor count, not problem time. On 1024 processors, Gustafson measured 1016–1021× speedup — near-linear scaling because the parallel portion grew with capacity [13].
Universal Scalability Law (2002)
S(N) = N / [1 + α(N−1) + βN(N−1)] [14]
The USL extends Amdahl by adding coherence costs:
| Parameter | Physical Meaning | Example |
|---|---|---|
| α (contention) | Waiting for shared resources | Database locks, bus contention |
| β (coherence) | Maintaining global consistency | Cache invalidation, distributed sync |
When β=0, USL reduces to Amdahl’s Law. When β>0, the system degrades beyond a peak — retrograde throughput [14]. This is critical for distributed systems where coherence costs grow quadratically.
graph LR
A["Amdahl (1967)<br>Serial ceiling: 1/f<br>Plateau only"]
G["Gustafson (1988)<br>Scaled speedup<br>Near-linear possible"]
U["USL (2002)<br>Contention + Coherence<br>Predicts degradation"]
A -->|"Fixed problem"| G
A -->|"Add coherence"| U
style A fill:#4CAF50,color:#fff
style G fill:#2196F3,color:#fff
style U fill:#d32f2f,color:#fff
Practical USL Application
Gunther shows that as few as 4 load test data points suffice to determine α and β via regression and predict the full scalability curve [14]. The capacity doubling time is Tdouble = ln(2)/λ [15].
Model Validation
Jain provides acceptance criteria for analytical model accuracy [6]:
| Prediction Target | Acceptable Error |
|---|---|
| Resource utilization | Within 10% |
| System throughput | Within 10% |
| Response time | Within 30% |
The higher tolerance for response time reflects the compounding of errors from multiple resource predictions. Wilson adds: changes of less than 10% may represent intrinsic fluctuation rather than real improvement [1].
References
- T. Wilson, “An Operational Analysis Primer.” Tutorial, 2008.
- J. Hillston, “Operational Laws.” Performance Modelling Lecture Notes, University of Edinburgh, 2014.
- J. D. C. Little, “A Proof for the Queuing Formula: L = λW,” Operations Research, vol. 9, no. 3, pp. 383–387, 1961, doi: 10.1287/opre.9.3.383.
- J. D. C. Little and S. C. Graves, “Little’s Law,” in Building Intuition: Insights from Basic Operations Management Models and Principles, Springer, 2008, pp. 81–100. doi: 10.1007/978-0-387-73699-0_5.
- G. Dobson and R. Shumsky, “Web-based Simulations for Teaching Queueing, Little’s Law, and Inventory Management,” INFORMS Transactions on Education, 2012.
- R. Jain, The Art of Computer Systems Performance Analysis. Wiley, 1991.
- J. Dean and L. A. Barroso, “The Tail at Scale,” Communications of the ACM, vol. 56, no. 2, pp. 74–80, 2013, doi: 10.1145/2408776.2408794.
- G. D. Everett and R. McLeod, “Performance Testing,” in Software Testing: Testing Across the Entire Software Development Life Cycle, Wiley, 2007.
- S. Haines, Pro Java EE 5 Performance Management and Optimization. Apress, 2006.
- H. H. Liu, Software Performance and Scalability: A Quantitative Approach. Wiley, 2009. doi: 10.1002/9780470465394.
- G. M. Amdahl, “Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities,” in Proceedings of the AFIPS Spring Joint Computer Conference, 1967, pp. 483–485. doi: 10.1145/1465482.1465560.
- J. L. Gustafson, “Reevaluating Amdahl’s Law,” Communications of the ACM, vol. 31, no. 5, pp. 532–533, 1988, doi: 10.1145/42411.42415.
- N. J. Gunther, “Hit-and-Run Tactics Enable Guerrilla Capacity Planning,” IT Professional, vol. 4, no. 4, pp. 44–47, 2002, doi: 10.1109/MITP.2002.1046643.
- N. J. Gunther, Guerrilla Capacity Planning: A Tactical Approach to Planning for Highly Scalable Applications and Services. Springer, 2007.
Disclaimer: AI is used for text summarization, polishing and explaining. Authors have verified all facts and claims. In case of an error, feel free to file an issue.