Performance Engineering

"Performance engineering encompasses the techniques applied during a systems development life cycle to ensure the non-functional requirements for performance (such as throughput, latency, or memory usage) will be met. It may be alternatively referred to as systems performance engineering within systems engineering, and software performance engineering or application performance engineering within software engineering." - Wikipedia

Books

  1. Every Computer Performance Book: How to Avoid and Solve Performance Problems 
on The Computers You Work With; Bob Wescott

  2. The Practical Performance Analyst; Neil Gunther

  3. Systems Performance: Enterprise and the Cloud; Gregg

  4. BPF Performance Tools; Gregg

  5. Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software; Connie U. Smith, Lloyd G. Williams

  6. The Art of Capacity Planning: Scaling Web Resources; John Allspaw

  7. Java Performance - The Definitive Guide; Scott Oaks

  8. Optimizing Java: Practical Techniques for Improving JVM Application Performance; Benjamin J Evans , James Gough, Chris Newland

  9. High Performance Browser Networking: What every web developer should know about networking and web performance; Ilya Grigorik

  10. High-Performance Java Persistence; Vlad Mihalcea

  11. Go-Perf Book, Thoughts on Go performance optimization, Damian Gryski

Blogs

Twitter

Links

Aggregators

Talks

  1. Performance Matters, Emery Berger

  2. Latency SLOs Done Right, Theo Schlossnagle

Courses

Linux

Websites

Various

  1. On the Impact of Memory Allocation on High-Performance Query Processing https://arxiv.org/abs/1905.01135

  2. I/O Is Faster Than the CPU – Let’s Partition Resources and Eliminate (Most) OS Abstractions https://penberg.org/parakernel-hotos19.pdf

  3. What Every Programmer Should Know About Memory https://www.akkadia.org/drepper/cpumemory.pdf

  4. https://youtu.be/Ho3bCIJcMcc - Performance Analysis & Tuning on Modern CPU - Denis Bakhvalov.