April 21, 2014

Understanding Performance Optimization Terminology

There are few terms you need to have a good understanding if you’re working with high volume systems. I commonly see these mixed and people not understanding the difference between them.

Performance – The performance comes down to performing up to users expectations (or expectations of your boss) which drills down to two important metrics – response time also sometimes called latency and throughput also called capacity. Response time applies to even single user and mostly critical in applications when a complex task needs to be performed such as report generation or search. It is just unacceptable if search takes a minute even if system has a capacity running for 100 of them at the same time. The response time is the most important aspect of performance because when we define system capacity we also define conditions on response time. For example system can handle 100 transactions a second with 95 percentile response time of 1 second.

Scalability – In the high volume applications we assume scaling to larger amount of users, larger systems, larger database size and this is what I will be speaking about. There is also aspects of scaling down for embeddable systems but it is whole other story. The question of scalability usually comes because system needs to handle larger load (or operate with larger database) which comes to the question of performance on the same system, getting larger box “scaling up” or using multiple systems “scaling out”. Scalability is really funny term because it is used in some many different context. You may hear “It does not scale” applied to the application on same system as load or database size increases as well as to the no significant response to getting more hardware. So I would define Scalability as ability to increase or sustain performance as response to the environment changes.

Efficiency This is my favorite one. Your application may be performing well and scaling to insane load and data size but If I can do the same with half the hardware (or half development costs) my application is more efficient than yours. The complexity of Efficiency term comes from the fact you can set the optimization goals very differently. Some are concerned about development time and operations complexity, others about hardware and software cost and TCO and third about power consumption.

What is interesting in many cases I see the focus on Performance and Scalability while not really focusing on efficiency a lot (at least until VC money run out). I’m constantly being surprised how efficient and inefficient systems you can find among top web sites. It is not an exception to see the difference in efficiency as much as 10 times or sometimes even more.

When you evaluate different solutions, see some suggestions in the internet I’d urge you to use all 3 metrics above for evaluation (using efficiency metric which is most critical for you right now). It is quite possible the most efficient solution somebody have picked is efficient using different metric compared to what you need.

About Peter Zaitsev

Peter managed the High Performance Group within MySQL until 2006, when he founded Percona. Peter has a Master's Degree in Computer Science and is an expert in database kernels, computer hardware, and application scaling.

Speak Your Mind

*