2 articles
From L1 to main memory and beyond — understanding why your 'fast' code might be waiting on data it already asked for.
Interpret flame graphs and find performance bottlenecks in complex distributed systems.