Friday, December 12, 2014

Performance Folks, Look What I Found! - Vdbench

Hi Friends,

I wanted to share with you a cool new performance testing tool I found.  As you may know I'm a big fan of IOmeter, it's easy to install, simple to use and gives good results.  But there were always a few things I wish it did.  For instance, what if I wanted to test compression ratio and deduplication capabilities on an array?  Also, IOmeter is great if you want to do a fire hose data blasting, but what if I want to set the IO rate?  How about writing and reading to raw devices vs. something that already has a file system on it?

I give you Vdbench.  Click on the Vdbench link to get it from the Oracle website.  It's a text based tool that is very easy to set up and has a TON of options to it.  It has so many options that I have just barely scratched the surface.  I'm doing some Windows filesystem testing right now, so I thought I would share some of the configurations I'm using to test the performance on my Nimble array.

So first off, after you download the tool, you need to install it.  How do you do that?  Unzip it.  That's it.  That's it?!  Yep, that's it.  What's great is you can run it on Windows, Unix, Linux, Mac, etc.  So you don't have to have different tools for different operating systems, pretty cool right?

















Yeah, I was pretty surprised too!

Like I said earlier, you can write to a filesystem or to the raw device which is pretty cool.  In the following example I created three drives, put NTFS on them and I'm varying the IO rate.

compratio=2.0,dedupratio=5,dedupunit=4k
sd=sd1,lun=n:\test1.txt,threads=32,size=50g
sd=sd2,lun=o:\test2.txt,threads=32,size=50g
sd=sd3,lun=p:\test3.txt,threads=32,size=50g
wd=wd1,sd=(sd1,sd2,sd3),xfersize=4k,rdpct=25,seekpct=100,openflags=directio
rd=run1,wd=wd1,iorate=(250,500,750,1000,max),elapsed=600,interval=5

Okay, this is where I like IOmeter better since it has a GUI.  I know, boo, hiss, GUI's suck, but I've really grown to like GUI's.  :-)  






Yeah yeah, laugh it up!  :-)


With Vdbench everything is CLI, so get your propeller hats on!  You create a configuration file and when you run Vdbench you reference that file, like the one I have above.  Let me break it down for you.












1.  compratio=2.0,dedupratio=5,dedupunit=4k
By default Vdbench writes non-compressible, non dedupable data.  Normally that's fine, but what if you want to test the compression and deduplication capabilities of your array?  Well that's where this line comes in.  Here I've got a compression ratio of 2:1, a dedupe ratio of 5:1 and the size of the data block that dedup tries to match with existing data, here I'm using 4k.

2.  sd=sd1,lun=n:\test1.txt,threads=32,size=50g
     sd=sd2,lun=o:\test2.txt,threads=32,size=50g
     sd=sd3,lun=p:\test3.txt,threads=32,size=50g
SD is your Storage Definition.  This can be either physical, logical, or a file system.  Here I'm pointing to a drive that already has a file system on it and telling Vdbench to create a 50gig file on each drive with a maximum concurrent I/O of 32 to each SD.

3.  wd=wd1,sd=(sd1,sd2,sd3),xfersize=4k,rdpct=25,seekpct=100,openflags=directio
WD is your workload definition and you just need to specify a variable since you can run multiple things with Vdbench.  Here I only have one workload.  I'm calling my storage devices with SD, my blocksize is 4k, I'm selecting a 25% read and 75% write workload, 100% random seek and using direct IO and no buffering.

4.   rd=run1,wd=wd1,iorate=(250,500,750,1000,max),elapsed=600,interval=5
RD is your run definition and you specify a name, similar to the above two variables.  Here I'm calling my workload definition 1.  Now this is really neat.  Here I'm specifying my IOPs and I'm selecting a varied run.  First I start out at 250, then step up to 500, next 750, 1000 and finally turn the fire hose on at full blast to see what the array can do at full throttle.  The neat thing about this is if you want to see how your array performs with specific IOPs you can.  Okay, **I** think its cool...  Next I'm running for a total of 600 seconds and reporting back to the screen every 5 seconds.

As I said earlier, I'm just scratching the surface of the tool and there's a TON more you can do with it.



















As I learn more about the tool and run more performance tests I'll share it with you!

Until Next Time!
-Brain

No comments:

Post a Comment