Wednesday, July 7, 2010

Defining Performance Starved Applications?

In a couple of my earlier posts I have referred to performance starved applications. To give some insight into what I am talking about I thought a brief post on the subject was warranted.

Performance starved applications are those applications where performance is negatively impacted because it is not receiving sufficient IO to deliver optimal performance. Examples would be transactional heavy databases, eCommerce applications, analytics (financial, business, seismic), exchange, BI applications, virtual environments etc.

Some of the more common symptoms of a performance starved application being;
1. Applications hit a performance ceiling
2. Heavy peak loads that negatively affect response times and QoS
3. Unpredictable workloads that negatively affect response times and QoS
4. IT resources deployed to simply sustain acceptable performance levels.

So what can cause normally high performance applications to become performance starved? As with many issues there are a number of potential causes. They can be either;

a. CPU I/O bound or
b. Disk storage I/O bound or
c. Or some other reason such as an infrastructure bottleneck or an application that is handicapped because it is single threaded.(more common than you may think)

When checking on application performance issues the first check should be the CPU performance, particularly its utilization. If the CPU is running with an average utilization greater than 50% the problem is most likely that the application is CPU bound. However, if the average CPU utilization rate is below 50%, the CPU is probably in a wait state created by something other than the CPU; the lower the utilization rate the more likely this is to be true. If the CPU has been eliminated as the culprit the next area to focus on would be the storage.

With storage first look at queue depth which is the number of I/O request waiting to be serviced by the storage system. A key variable that influences queue depth is the number of drives or spindles that are available. The more spindles the greater is the ability of the storage subsystem to respond to I/O request. This is why highly dense packaging such as the Atrato V1000 delivers a high access density by packing 160, 2½” drives into a 3U, rack mountable envelope. This is a configuration that can deliver a very high IOP performance increasingly demanded by performance hungry applications such as found in virtualized environments.

However adding more drives to reduce queue depth can be problematic. Simply adding more spindles to get I/O performance can be expensive and if the application does not need the capacity -- a waste. Short stroking expensive FC drives to improve IO performance a great example of what I call an unnatural and wasteful act.

However if the queue depth is zero but the bottleneck is still storage what is the issue? The issue must be latency and the obvious solution is a faster drive. But what if the fastest drives available are already installed? This is where SSD’s become attractive.


cruz said...

Business process outsourcing (BPO) is a form of outsourcing that involves the contracting of the operations and responsibilities of specific business functions (or processes) to a third-party service provider. Originally, this was associated with manufacturing firms, such as Coca Cola that outsourced large segments of its supply chain.In the contemporary context, it is primarily used to refer to the outsourcing of services.
SEO process

Joshua Smith said...
This comment has been removed by a blog administrator.
Joshua Smith said...
This comment has been removed by a blog administrator.
Joshua Smith said...
This comment has been removed by a blog administrator.
Joshua Smith said...
This comment has been removed by a blog administrator.