Chapter 36. Beware the “System Bottleneck”
Not everyone defines bottleneck as an attribute of a program execution. A popular alternative definition of bottleneck that people use is: a system’s bottleneck is the resource at which the system spends the most time. Let’s play with that definition for a moment.
Recall in the Payroll story that the systemwide monitoring tools had shown that the system’s top two bottlenecks were (1) CPU and (2) “latch free.” But observe these alleged “bottlenecks” in the PYUGEN profile. If you were to eliminate its need for CPU consumption altogether (which you can’t), you’d make only a 12.7% difference.1 If you were to eliminate latches from the face of the Earth, you’d make only an imperceptible 1.2% difference.
Looking at their system’s bottleneck instead of their high-priority program’s bottleneck earned our customer months of frustration, a bunch of torn-up office buildings, and a profound sense of confusion after an expensive CPU upgrade made their most important program even slower than it was before.
The moral of this story:
Don’t take your eye off your real goal.
I understand that you want to optimize your whole system, but the best way to do it is one prioritized symptom at a time. Looking at systemwide aggregated statistics can take you way off your optimal path. To stay relevant, look at the bottleneck for your business’s highest priority symptom.
1 (7.0 + 3.8 + 1.9)% = 12.7%.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access