Friday, 5 June 2015

IOPS Testing and Planning

IOPS reperesent the amount of input and output requests (per second) a disk is handling. Dependent on what kind of applications you are using can significantly determine the amount of IOPS are required.

For example recource intensive application such as heavily used relational databases and NOSQL databases typically require a large number of IOPS due to the frequency of disk operations (e.g. writing / requesting data from the database)

When taking into account IOPS we should also be aware of latency (which relates to how long a request actually takes from the applications point of view.) IOPS can vary greatly dependent on the block sizes being tested - typically testing lower block sizes (e.g. 12KB) result in greater IOPS, while larger block sizes (e.g. 100MB) result in lower IOPS but have greater throughput.

In order to get an idea of how many IOPS a disk is capable of performing we can use a tool called IOmeter (there are a whole host of alternatives - I personally like IOmeter as it will work on multiple platforms) - available below:

** Update **  A much more user-friendly disk benchmark tool can be downloaded below (will also work perfectly fine on mechanical disks):

AA SSD Benchmark

In order to maximize available IOPS on a disk the following actions can be taken:

- Stripe a volume over multiple physical disks (e.g. RAID 1, or RAID 10)
- Use a faster disk type e.g. SSD - rather than coventional media such as mechanical disks.

Calculating IOPS can become a pretty complex task (and although there is nothing wrong with working out advanced RAID configurations yourself - it never harms to double check it with an IOPS calculator):

As a rough average I have outlined some common configurations below:

7,200 rpm (SATA) =    75 - 100 IOPS
10,000 rpm (SATA / SAS) = 125 - 150 IOPS
15,000 rpm (SAS) = 175 - 210 IOPS
SSD Drive 45,000 - 50,000


Post a Comment