Step 3: Why my sysbench-trained build loses and how to do it
right.
Given the topic complexity and the length of this article I have split it in 3 three different blog-post:
- What is PGO
- How PGO it works
- Why my sysbench-trained build loses and how to do it right.
Three compounding reasons:
-
Uncovered code gets pessimized.
Sysbench-tpcc touches a narrow slice of mysqld.
Every function with zero counts is treated as cold: GCC optimizes it for size, skips inlining, and shoves it into cold sections.
But at runtime I still execute plenty of code my training never touched, such as purge, flushing, stats …