Monday, April 11, 2016

IOPS, BlockSize, Latency - How To Make Sense Of It All

Hi Friends,

For today's blog I thought I'd talk about something really SEXY....

Performance!  Yep, you read my mind, virtual machine performance.

















If you've read my blog in the past I usually ramble on about IOPS this, BlockSize that, Latency blah
blah blah.  Here's your limited time chance to learn what it means and I'm going to show you a super cool way to get those metrics.  So when your boss asks you, "Hey, how many IOPS is that virtual machine using?  Customer XYZ is complaining again!"  You can say, "Well, this is the IOPS, but here's what's REALLY going on!"

Do you want that knowledge?

Do you REALLY want that knowledge?!?!

I can't hear you!!!!

Say it with me, "I WANT IT!"





















So let's talk about IOPS.  My buddy Rob uses a great analogy that I really like.  IOPS are like RPM (revolutions per minute) in your car.  My car is running at 3000 RPM!  Umm, okay....  3000 RPM of what?  RPM is a measurement of how fast the engine is turning, not a measurement of speed of the car.  Now if you said, your car is at 3000 RPM at 65MPH while in 6th gear, that means a lot more to me!

So let's take our car analogy and transition it to computer performance.  When someone tells you their computer runs at 100 IOPS, my response is usually, 100 IOPS of what?  IOPS are a measurement of Input/Output Operations per Second, which is a lot like RPM in your car.  Yeah, the computer is thinking hard, but is it doing any work?

Let's add our speed and gear; block size and latency.  Okay those don't line up exactly to the car analogy, but I'm the one writing this and you will listen to me!  :-)  Block size is the size or weight of the item you want to move and latency is anything that's going to slow you down.  So imagine I'm rolling down the street in my car and I'm carrying 4 anvils in the trunk while driving on a really crappy road.  Why am I carrying 4 anvils in the car?  Ummmm....





















So with me and 4 anvils in the car, that's a lot of weight!  With all of this extra weight the car is going to have to work a lot harder to keep moving.  And how about the crappy road?  With poor road conditions, I won't be able to drive as fast.

Still with me?  Now lets move our anvil filled car over to the computer world.

A computer is a wonderful device, I tell it what to do and it does it!  But a computer can only do so much work, just like our car.  Imagine I have to deliver all 4 anvils to 4 different friends.  Each friend lives a different distance from me and the road to each friends is in various stages of disarray.

Scenario 1:
Friend 1 lives 2 miles from me, the road is REALLY crappy and I have the weight of 4 anvils in the car.

Scenario 2:
Friend 2 lives 8 miles away from Friend 1, the road is in pretty good shape and now I have the weight of 3 anvils in the car.

Scenario 3:
Friend 3 lives 20 miles away from Friend 2, the road is in sorta crappy condition and I have the weight of 2 anvils.

Scenario 4:
Friend 4 lives 1 mile from Friend 3, the road is in really good condition and I only have the weight of 1 anvil left.

Let's take scenario 1.  My friend lives pretty close to me, but I have a lot of weight in the car AND the road is in really bad condition.  The car has to work pretty hard because it has a lot of weight in the car and I can't drive very fast because of the road condition.

If this delivery was a computer, the trip to my friends house is the program I want to run.  The weight in the car is the blocksize, the road condition is latency and my RPMs having to sustain a certain speed with the amount of weight in the car are my IOPS.  And don't forget gas!!

Make sense?

How about another analogy?

Imagine I have a pie and every time I tell the computer to do something a piece of pie gets taken out of the whole.  Once the pie is gone, no more work.  Unfortunately not every piece of pie is exactly the same size.  Some get more filling, some get more crust, and that first piece is really a pain to get out of the pie tin.  I just like pies and wanted to get a dessert in there some where.

Back to cars...  So you see, without having all of the details, figuring out how long it's going to get to my friend's homes or even if my car will make it there would be a total guess.  So how would you size a computer without all of these same details?

Now friends I'd like to introduce you to part of the Tintri GUI.

In the picture below I'm running a workload.  I have one graph displaying, IOPS.  According to my IOPS graph I'm running about 2,000 Read IOPS and 21,000 Write IOPS.  But you'll notice something called normalized,  and the IOPS are 58,000.














Heeeeeeeey wait a second, I'm pretty bad at math, but I'm pretty sure 21,000 + 2000 is NOT 58,000.  What the heck?  Remember our anvils?  Tintri is optimized for an 8K block and if the workload being run on my array was 8K the normalized and non-normalized IOPS would be the same, but since the blocks are NOT 8K and are larger I'm doing a lot more work.  This is VERY handy because if I didn't have this metric I'd have to calculate out how heavy my workload was.  And as my friends know I'm HORRIBLE at math.

So what IS the blocksize?  From this view I know it's not 8K, but what is it?  Well, I could calculate that out by hand, but I'm lazy and Tintri does it for me!  :-)

Here's just a single view.  I can customize this in TONS of different ways, but you can see I've added the Block size KiB metric.  Each of these desktops are running a bunch of different applications to simulate users running their desktops, but each are at different points in the workload.  As you can see the block size is fairly different for each of the desktops depending on what the computer is running at that specific point in time.






















So why would I choose a 4 cylinder car to deliver anvils?  If I know I've got a really heavy workload I'm going to choose a big truck with a big diesel engine because it was designed for that purpose, just like computers.  Before I can standardize on a computer I need to know what it is I'm going to run on it and Tintri makes find out what I'm running very easy.

Or if I already have an environment, Tintri can tell me how hard that environment is working, when I'm going to run out of resources and where my problems are.  Pretty cool eh??

Well, that's all for today, I've got lots and lots to tell you about performance and the goodness of Tintri, but that'll need to wait for another day.  Let me know what you thought of the article!

Until Next Time!
-Brain



1 comment: