VMware VAAI with EMC ScaleIO

I’ve started recently playing a lot with EMC ScaleIO (version 1.2 just came out) and deployed it in my VMware environment. VERY easy to deploy and use.

During my investigation of the product I noticed in the vSphere Client that my ScaleIO datastore was marked as supported for VAAI. I looked around for some documentation saying so and I haven’t been able to find any off the bat (if anyone does let me know).

scaleio_vaai1

So what VAAI primitives does it support? Well let’s see, using the following trusty command we can find out exactly:

esxcli storage core device vaai status get

The result for the ScaleIO device is below:

scaleio_vaai2

As you can see ScaleIO devices support Atomic Test and Set (known as Hardware Assisted Locking) and WRITE SAME (known as Block Zero).

So ATS is pretty straight forward so I am not going to get any more into that. But let’s take a closer look at how ScaleIO handles Block Zero.

Block Zero is typically handled one of two ways, either the array accepts the write same SCSI commands and then writes the zeros internally or it accepts the write same SCSI commands and just reserves the space (or in some rare occasions does nothing). So what does ScaleIO do?

Important disclaimer!! My environment is not EVEN CLOSE to being configured for optimal performance so do not take any throughput, time, latency or IOPS etc. numbers to be representative of a typical customer environment. This is simply a functional test environment.

First let’s look at deploying a 20 GB eagerzeroedthick virtual disk to a ScaleIO volume WITHOUT Block Zero enabled. Below is a screenshot of ESXTOP of the MB/s and the IOPS going to the ScaleIO disk when Block Zero is disabled:

scaleio_vaai3

The ScaleIO device is boxed in red (with the eui “Extended Unique Identifier” prefix) and you can see a throughput rate in Megabytes per second (MBWRTN/s) of about 100. Let’s now look at the ScaleIO GUI. Note that this is the only activity going on in this ScaleIO system right now.

scaleio_vaai4

ScaleIO reports the same thing. So this means that the megabytes of zeros are just simply going to the ScaleIO storage pool and being written normally. Of course, nothing interesting there.

Let’s turn on Block Zero now and run the same test. First the esxtop results:

scaleio_vaai5

The throughput has fallen drastically on the ESXi host from ~100 MB/s to a few KB/s to transmit the WRITE SAME SCSI commands. Now the ScaleIO GUI.

scaleio_vaai6

As you can see the ScaleIO environment is still recording substantial throughput during the virtual disk deployment. But instead of coming from the host, zeroes are being translated by ScaleIO from the WRITE SAME commands and are then committed to the storage pool. Furthermore, the virtual disk creation operation and the throughput seen in ScaleIO end at the same time so it is a synchronous operation for ScaleIO.

Also to note that with WRITE SAME enabled the throughput was three times higher and indeed the creation time was three times faster. But I am not sure if this will always translate to all environments. I find it very unlikely that with WRITE SAME it would ever be slower, but it is certainly possibly that your results could be even better than what I found. My environment currently has small network pipes (1 Gb) so there is a bottleneck there which limits the non-WRITE SAME enabled test to whatever it can push through a 1 Gb iSCSI connection. The ScaleIO SDS connection to the backend storage is much faster so the throughput isn’t throttled with the WRITE SAME enabled test.

I need to setup a better environment to see if I can get a better apples-to-apples comparison. Regardless, it is promising.

So the next question is will ScaleIO support the other primitives (UNMAP and XCOPY)? I do not know. The UNMAP primitive may not really have much of a use case here anyways (currently), but XCOPY could. I’ll definitely keep my eye on this area.

For information on deploying ScaleIO in a VMware environment check out my coworkers excellent blog posts here:

http://purevirtual.eu/2013/11/16/install-scaleio-in-a-vmware-environment/

http://purevirtual.eu/2013/11/19/how-to-install-scaleio-in-a-vmware-environment-part-2/

And for official documentation look here on support.emc.com:

https://support.emc.com/docu50203_ScaleIO_Release_Notes_1.20.pdf?language=en_US

https://support.emc.com/docu50957_White_Paper:_EMC_ScaleIO_Architectural_and_Functional_Overview.pdf?language=en_US

https://support.emc.com/docu50195_ScaleIO_User_Guide_1.20.pdf?language=en_US

And to download the files:

https://download.emc.com/downloads/DL50290_ScaleIO_1.20_Linux/_ESX/_CentOS_zip_file.zip

Thanks! Look for some more VMware and ScaleIO posts to come shortly!!

One thought on “VMware VAAI with EMC ScaleIO”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.