During WOPR22, we spend a few minutes before lunch collecting systems-based (as opposed to code) optimizations that the group had used in the past. This was time- and hunger-bound.
This is not an exhaustive or ranked list, and does not include enough information to use these as heuristics. It might be a source of ideas.
This work is the product of all of the Workshop on Performance and Reliability (WOPR22) attendees. WOPR22 was held May 21-23, 2014, in Malmö, Sweden, on the topic of “Early Performance Testing”. Participants in the workshop included Fredrik Fristedt, Andy Hohenner, Paul Holland, Martin Hynie, Emil Johansson, Maria Kedemo, John Meza, Eric Proegler, Bob Sklar, Paul Stapleton, Andy Still, Neil Taitt, and Mais Tawfik Ashkar.
Optimization | Benefit |
---|---|
Faster CPU Clock | More iterations of tasks |
Turn of Parallelism on SQL Server | Prevents other users from getting blocked by a single bad or slow query |
More CPU Cores | Do more things simultaneously |
Domain Sharding | Allows more connections |
Using SSD | Faster disk I/O |
Use of I/O Accelerator cards (e.g. Fusion-IO) | Faster I/O due to being right on bus - lower power consumption |
More Memory | Reduce need for disk access (Fastest I/O) |
Reduce DB Memory Usage | Leave room for OS to avoid paging |
Enable Jumbo Frames at network level | Reduce packet overheard |
Use WAN Accelerator Appliances (Riverbed) | Eliminate/Optimize retransmission of repetitive traffic |
Oracle: Pinning Execution Plan | Keep good plans in memory, prevent Recalculation. Use with caution! |
Oracle: Index Cost Adjustment | Manually tweaking query optimization. Use with caution! |
Tune # of processes and threads on web server | Potential performance improvements |
Automatically set max HTTP connections to > 2 | Speed up clients |
Turn off Hyperthreading on a physical SQL Server | Reduce switching overhead, process fewer concurrent queries more efficiently |
Reduce # of cores on VM from 4 to 2 | More frequent scheduling; not waiting for 4 cores to become available |
JMeter - increase heap size if near max | Increases efficiency |
JMeter - at throughput > 900 trans/sec, do no use agents. Use multiple masters | Increases throughput |
Tweak garbage collection frequency or try different GCs | Reduces badness |
Turn on HTTP compression | Reduce bandwidth utilization |
Go to lunch | Fix hunger |