Benchmarking between LSI SAS x PVSCSI Controller

Reading Time: 4 minutes

Benchmarking between LSI SAS x PVSCSI Controller is an article that shows a simple performance comparison between LSI SAS x VMware Paravirtual Controller.

So, we have an article that explains how to change the disk controller from the LSI SAS SCSI controller to the VMware Paravirtual controller. If you need to check more details about that, click here.

Our goal here is to show a simple benchmarking related to performance when a Windows VM is using the LSI SAS SCSI controller and VMware Paravirtual SCSI controller. We will do some performance tests in a VM that is using both controllers, and we will show the results.

We will use the Microsoft tool called “diskspd” to do the performance tests. About this tool:

“DISKSPD is an I/O generating, command-line tool for micro-benchmarking. Great, so what do all these terms mean? Anyone who sets up an Azure Stack HCI cluster or physical server has a reason. It could be to set up a web hosting environment or run virtual desktops for employees. Whatever the real-world use case may be, you likely want to simulate a test before deploying your actual application. However, testing your application in a real scenario is often difficult – this is where DISKSPD comes in.”

Source: https://learn.microsoft.com/en-us/azure-stack/hci/manage/diskspd-overview

At the moment that we are writing this article, the latest version of the diskspd can be handled in the below link – We are using this tool in a Windows Server VM:
https://github.com/microsoft/diskspd/releases/download/v2.0.21a/DiskSpd.zip

Our lab VM

Guest OS: Windows Server 2020 64 Bits (Evaluation)
CPU: 2 vCPUs
Memory: 4 GB
Hard Disks:
— 90 GB –> Boot device / Operating system
— 160 GB –> Data device
— 200 GB –> Data device
Note: All disks devices are using the default disk controller (LSI SAS SCSI)
VMware Tools: running, version 12352

Test 1 – Doing the performance test using an LSI SAS SCSI controller

Firstly, we will do the test using the default disk controller.

1- Download the diskspd and extracts the zip file to your preferred directory;

2- Run the diskspd. In this example, we are using the below syntax:

diskspd.exe -t2 -o32 -b4K -r4K -d120 -Sh -D -L -W -w30 -c5G F:\test.bat

Where:
-t2 = Number of threads per target/test file. This number is often based on the number of CPU cores;
-o32 = Number of outstanding I/O requests per target per thread (this is also known as the queue depth);
-b4K = Block size;
-r4K = Random I/O block size;
-d120 = Duration (seconds) of the test;
-Sh = Disables software and hardware write caching;
-D = Captures IOPS statistics;
-L = Measure latency statistics;
-W -w30 = Specific the percentage of write operations during the test. In this example, 30%;
-c5G =
F:\test.bat = File that will be created as a result of the test

After executing the command, wait for 2 minutes. The result will show after this time. In the below picture, we have the results. Take look:

About CPU:
— The average (avg.) CPU consumption was 58.79% during the test.

About I/O:
— The total IOPS was 38041.61 during the test.

About Latency:
— The average (avg.) latency was 1.681 ms during the test.

Test 2 – Doing the performance test using a VMware Paravirtual (PVSCSI) controller

To do this new test, we are using the same Windows VM. We powered off the VM, change the disk controllers and we powered up the VM again. To remember, we used this article to change the disk controller from LSI SAS to VMware Paravirtual.

Run the diskspd command again:

diskspd.exe -t2 -o32 -b4K -r4K -d120 -Sh -D -L -W -w30 -c5G F:\test2.bat

Below are the results:

About CPU:
— The average (avg.) CPU consumption was 31.47% during the test.

About I/O:
— The total IOPS was 41276.76 during the test.

About Latency:
— The average (avg.) latency was 1.550 ms during the test.

Tabling the results

To be easier to validate the results, we will put them all together in a table:

LSI SAS SCSI Disk ControllerVMware Paravirtual SCSI Disk Controller
CPU Usage: 58.79%CPU Usage: 31.47%
IOPS: 38041.61IOPS: 41276.76
Latency: 1.681 msLatency: 1.550 ms

So, based on this simple test, it’s possible to see some interesting results:

— When we are using the VMware Paravirtual Disk Controller, in fact, we have less CPU usage or less CPU overhead than LSI SAS SCSI Disk Controller. So, it’s a good practice to verify if your Guest OS supports this controller and, in a positive case, change to this controller;

— When we are using the VMware Paravirtual Disk Controller, we have more performance because we have more IOPS;

— And, we have less latency when we are using the VMware Paravirtual Controller.

Obviously, there is a simple test in a lab environment and the results in a production environment can be different. But, I guess that we have positive pieces of evidence that the VMware Paravirtual Disk Controller is a good choice to consider for our VMs 😉