Thursday, October 6, 2011

vSphere Design: Storage IOPS

A friend of mine asked me this question:
"Any idea roughly how much IOPS should we estimate for a VM?
My estimate is about 400 IOPS per VM – taking physical server for comparison.
SAS disk is about 200 IOPS and typically, a server would have 2xHDD for OS, so total IOPS is about 400 IOPS.

However, this number can be quite big especially if we have many VMs.
I’m now struggling with provisioning more capacity than needed for VMware environment to meet the IOPS requirement. This actually drive up the storage cost."

My reply as was follows after a short thinking:
Correction. Typically server with RAID 1 does not have 2 x IOPS. It has 1 x IOPS. Its not writing to two HDDs but its mirror to one by the raid controller.

Two things to note. Yes take the physical server IOPS using the worse scenario; 1. for database server, 2. for a normal app server.

Size two types of datastores, 1. with higher IOPS cater for database; 2. for normal app server. If you can use SSD that would be good definitely. vSphere 5 allows you for datastore cluster which is another added advantage.

Where n is no. disk for RAID, the calculation to get the IOPS required:

RAID 10 has the best IOPS for and can be use for database VMs.
read (n x IOPS)
write ((n x IOPS) /2 )

RAID 5 suitable more for normal VM which use more read and doesn't use a lot of Write.
read ( (n-1) x IOPS)
write ( (n x IOPS) /4)

Then ask the customer for each server what would be the percentage of read and write.  Knowing the percentage will allow you to size the storage more accurately unless you are able to provide the worst scenario and base everything on 100% write. 

IOPS Reference for HDD
15k SAS 180 IOPS
10k SAS 130 IOPS
7,2k SAS 80 IOPS
5.4k SAS 50 IOPS
SSD (SLC) 6k-30k IOPS
SSD (MLC) 1k-2k IOPS

To calculate the actual HDD IOPS here is a calculation reference from here.
Avg Latency = l in seconds
Average Seek time = R/W = S in seconds
Actual IOPS = 1/(l+S)

This is base on a rough sizing example.  There are definitely tools provided by storage vendors to size this better.  Some storage vendors might even have technology that can improve IOPS e.g. EMC fast cache, etc.

Update: Added portion from

(TOTAL IOps × % READ)+ ((TOTAL IOps × % WRITE) ×RAID Penalty)

So for RAID-5 and for instance a VM which produces 1000 IOps and has 40% reads and 60% writes:
(1000 x 0.4) + ((1000 x 0.6) x 4) = 400 + 2400 = 2800 IO’s
The 1000 IOps this VM produces actually results in 2800 IO’s on the backend of the array, this makes you think doesn’t it?

Update 26th Dec 2013
Added the calculation to find the IOPS for a HDD.

No comments:

VMUG Singapore VMC Session

With the launch of VMware Cloud (VMC) on AWS in Singapore back in April 2019, there has been lots of talk and questions. VMUG Singapore w...