Test I/O speed on Windows (Linux dd equivalent)

Introduction

One part in testing a VPS is to read and write data to the disk. The other parts are usually the upload/download speed and CPU usage. We have all seen these statistics when reading reviews on providers.

Being a part of communitys where the focus lays in the Linux world, the (in)famous dd command is used on most occasions to measure disk speeds. Even if the accuracy of these types of sequential reading and writing tests on a server are debated, as opposed to real life experience where random reading and writing data all over the disk. That discussion is not the intended direction of this article so I’ll leave it to another article at a later time.

For those of you that doesn’t know of the dd command and wonder what I’m writing about. This is the command that will give you a hint of how fast (or slow) your disk is:

When ran on a Linux server you should get a result like this (Time and speed may vary):

Windows Users, What to use?

Since dd only works on Linux Operating Systems, what would a Windows user use to measure his/her server when it comes to disk speed?  I have seen that same question more and more frequent on some of the forums I visit and to my findings the tool that comes closest is the SQLIO.EXE utility by Microsoft.

Despite its name, sqlio is not part of SQL Server, yet it can be an invaluable tool for determining whether the disk drives slated to support SQL Server can meet the system’s I/O needs. The tool lets you push the limits of your disk subsystem in order to determine the hardware’s I/O capacity and to identify performance-related issues before using the server in production.

The upside of this tool is that you can use it to test a variety of disk subsystems, including direct attached storage, network attached storage, and storage area networks.

Download this utility directly from Microsoft using this link and run the msi file on the server you would like to test. You could also run the installation on your local computer and then copy the sqlio.exe file to the server. There is no need for installation except to package all the files that comes with the utility.

Included in the msi package is a README.rtf file with an introduction to the utility and more important the param.txt that explains the configuration options when running this command.

I won’t get into much detail about this utility, instead I would like to introduce you to this Powershell wrapper which I find easier to use and will give you the output as a table or in a grid. You can measure the workload in two ways, IOPS or Transfer rate.

This Powershell wrapper is written by Mikael Nyström, Microsoft MVP. Link to his website is here.

The script is available for download here and full code is shown further down this page,

Prerequisite:

  • Sqlio.exe must be in the same directory as the PowerShell script.
  • PowerShell 3.0 must be installed

Example:

Explanation:

-TestFileName test.dat

The name of the file, it will create the file using FSUTIL, but it checks if it exists and if it does it stops, you can override that with the –RemoveTestFile True

–TestFileSizeInGB 1

Size of the file, it has fixed values, use the TAB key to flip through them

-TestFilepath C:\VMs

The folder, can also be an UNC path, it will create the folder so it does not need to exist.

-TestMode Get-LargeIO

There is too test modes Get-LargeIO or Get-SmallIO, you use Get-LargeIO to measure the transfer rate and you use Get-SmallIO to measure IOPS

-FastMode True

Fastmode true runs each test for just 10 seconds, it gives you a hint, if you don’t set it or set it to false it will run for 60 sec (it will take a break for 10 sec between each run)

-RemoveTestFile True

Removes the test file if it exists

-OutputFormat Out-GridView

Choose between Out-Gridview or Format-Table

That is all to know about this script and utility.

This is the output I get when testing IOPS on a XEN HVM+PV that I have with Inception Hosting:

testiops

Don’t forget to press CTRL+C to stop the test when you have enough data.

 

Complete script in plain text for those of you that want to read it.

 

6 comments for “Test I/O speed on Windows (Linux dd equivalent)

  1. February 7, 2015 at 16:02

    good

  2. November 15, 2015 at 12:55

    What’s up to all, since I am really eager of reading this website’s post to be updated
    daily. It includes good information.

  3. Reed
    November 21, 2015 at 16:27

    Have you ever thought about including a ittle bit more
    than just your articles? I mean, wwhat you say is fundamental and
    everything. But think about if you added some great visuals or
    video clipps to give your posts more, “pop”!
    Your content is excellent but with images and clips, this blog could undeniably bee one of the greatest in its field.

    Awesome blog!

  4. December 17, 2015 at 04:35

    You should be a part of a contest for one of the best
    sites on the web. I’m going to recommend this web
    site!

  5. December 19, 2015 at 12:31

    If you wish for to improve your know-how just keep visiting this site and be updated with the most
    up-to-date information posted here.

  6. December 24, 2015 at 01:46

    Hello, yeah this post is in fact good and I have learned lot of things from it
    regarding blogging. thanks.

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.