What do we want out of load or performance test?
We use performance tests to verify the raw throughput of some subsystems and to verify the overall impact some subsystem has on an entire ecosystem. Load tests act as documentation for performance indicators and re-enforce performance expectations. They are vital in identifying performance regression.
Load and performance tests are an often overlooked part of the software release lifecycle. Load tests, at their most basic level, are about stress testing a system by dropping a lot of work onto it. Sometimes it is a percentage of expected load, other times it is the expected load, and other times it is future expected levels of load. A failure to test expected near-term load can lead to spectacular public failures.
Video
Measurements
- Your business requirements determine requirements for throughput, latency.
- Your financial requirements impact the choices you take towards achieving those goals.
- Your technical implementation determines whether you improve efficiency or scale up/out to meet those requirements.
Latency
This is the processing time of an individual request. You may desire low latency when a human is waiting or when something will blow up if it doesn't get an answer in time. You may not care very much about the actual latency if the response time is relatively unimportant.
Some systems will prioritize work and provide different latencies for different workloads. Network routers prioritize video traffic, changing potential latency because web traffic can survive higher latency and variability than video feeds.
Latency = execution time of single operation
Wait-time ∝ Latency * Resource Availability
Operations Per Second
OPS is the raw throughput of your system. It represents the number of requests that your system can process in some time period. It does not describe how long any specific request takes to complete. Throughput and latency can be related to each other by
Throughput ∝ latency * parallelism
Throughput ∝ efficiency * parallelism
Resource Utilization
Resource utilization is measured as part of load testing. These measurements are used to try and understand resource constraints and where throttling occurs.
Optimizing resource utilization can lower latency and costs. It is the alternative to scaling up/out to achieve performance goals.
You can build a system that meets your OPS and latency needs and not be able to afford to run it. Load tests help you measure your resource utilization under load. This can provide hints on where to optimize or tune to improve performance or lower cost.
Simple & Repeatable or Complicated & Accurate
One is the easiest number
Everyone gets involved
Generating production-sized data can be hard. One approach is to tap production traffic and sanitize and anonymize that data before using it to drive a broad load test. This approach guarantees that the shape of the test data can match the shape and distribution of the production data
End
Created 2021/04
Comments
Post a Comment