airhacks.fm podcast with adam bien· Folge 339

High-Performance Load Testing

Sonntag, 6. April 2025 · 1 h 10

MP3

Shownotes

An airhacks.fm conversation with Francesco Nigro (@forked_franz (twitter.com/forked_franz)) about:
discussion about the importance of stress testing over System Tests (en.wikipedia.org/wiki/System_testing) and unit tests,
Coordinated Omission Problem (redhatperf.github.io/post/coordinated-omission) in load generators where they don't accurately measure server performance during slowdowns,
introduction to HyperFoil (github.com/Hyperfoil/Hyperfoil) as a high-performance load generator capable of generating millions of requests per second with just two cores,
explanation of how HyperFoil avoids GC overhead by pre-allocating resources,
the architecture of HyperFoil using Netty (netty.io) event loops and a graph-based execution model,
comparison with other load testing tools like JMeter,
K6 (k6.io),
Apache Benchmark and Vegeta (github.com/tsenart/vegeta),
introduction to QDUP (github.com/Hyperfoil/qDup) as a shell automation tool for distributed testing,
overview of github.com/Hyperfoil/Horreum for performance test results storage and analysis,
explanation of how these tools work together in Red Hat's performance testing pipeline,
discussion of github.com/JCTools/JCTools and its importance for GC-free concurrent data structures,
the Universal Scalability Law (en.wikipedia.org/wiki/Neil_J._Gunther#Universa…) and its application to load balancing algorithms,
the pick-two-random algorithm for efficient resource allocation,
the benefits of using JBang (github.com/maxandersen/jbang) for easy one-line execution of HyperFoil,
potential drawbacks of HyperFoil including ergonomics and JIT (en.wikipedia.org/wiki/Just-in-time_compilation) compilation warm-up issues,
the possibility of using GraalVM (graalvm.org) native image (graalvm.org/docs/reference-manual/native-image) to avoid JIT compilation delays

Francesco Nigro on twitter: @forked_franz (twitter.com/forked_franz)

0:00 / 0:00