VMware

How to Run VMmark 4 to Benchmark Your Virtual Environment and Home Lab!

A guide to learn how to run VMmark 4 benchmark utility from VMware, to test performance of your virtual environment and storage.

I have been intrigued with benchmarking recently, with several projects, both personally and professionally, in the data center and the home lab. A great benchmark solution for virtualized environments is a program called VMmark. Its latest version is VMmark4, and it has some great features and realistic workloads that can help with understanding the real-world performance of your infrastructure. However, it might be a little bit confusing as to how you run it so let’s see how this is done.

Brief overview of VMmark 4

The VMmark4 program is a benchmark utility from VMware that allows you to run real workloads on a datastore to understand the performance of the hardware/environment. It uses a concept called “tiles” to represent workloads.

Tiles are groups of virtual machine resources that simulate real applications, like social media apps, SQL, NoSQL, a 3-tier web application, etc.

Viewing the overview of architecture for vmmark 4
Viewing the overview of architecture for vmmark 4

Overview of running VMmark 4

How do you actually use it and get up and running with VMmark4? Below is an overview of the process:

  1. Download and deploy the VMmark4 OVA
  2. Clone and setup the PrimeClient VM from the deployed OVA
  3. Configure the network of the cloned VM
  4. Configure as the Prime Client
  5. Setup passwordless SSH
  6. Run the VMmark 4 Quickstart
  7. Interesting home lab challenges
  8. Deleting the VMmark 4 VMs and cleaning up

1. Download and deploy the VMmark 4 OVA

You can download VMmark 4 from the following link: VMmark (vmware.com). Click the Download button. One nice surprise is that it isn’t too difficult to get t the download on Broadcom’s site, unlike other downloads are.

Once you download the VMmark 4 OVA appliance, you deploy this in the environment. This is a normal OVA deployment process. But, I am showing the screens of the process below, just so you can see those and know what to expect.

Beginning the deployment of the vmmark 4 ova
Beginning the deployment of the vmmark 4 ova
Name the new vmmark 4 virtual machine
Name the new vmmark 4 virtual machine
Select a compute resource
Select a compute resource
Review the initial deployment details
Review the initial deployment details
Select storage for the vmmark 4 appliance virtual machine
Select storage for the vmmark 4 appliance virtual machine
Select networks for the virtual appliance
Select networks for the virtual appliance
Ready to complete the vmmark 4 ova deployment
Ready to complete the vmmark 4 ova deployment

The documentation calls for making sure you have the option for synchronize at startup and resume (recommended) as well as the Synchronize time periodically checked.

Configure the time synchronization of the vmmark 4 appliance
Configure the time synchronization of the vmmark 4 appliance

2. Clone and setup the PrimeClient VM from the deployed OVA

The VMmark 4 guide has you clone the deployed OVA to have the original pristine copy sitting there to use and will be what is cloned for the workload VMs. The that you create is called the PrimeClient. This is the machine that orchestrates the virtual machines that will be used for the VMmark 4 benchmark.

Once you clone the machine, before powering it on, you need to add aย 2nd and 3rd disk at 50 GBย a piece, according to the documentation. Then also 1 additional network adapter. This will be used for communicating with the subnet configured for the benchmark VMs.

Add hard disks and network adapter to the primeclient
Add hard disks and network adapter to the primeclient

3. Configure the network of the cloned VM

The virtual machine that is deployed will need two network adapters. One will connect to your LAN and just pull an IP address. Even if you connect the 2nd adapter to the same network label, we will configure this 2nd adapter thta we added to the virtual machine with an IP address that can communicate with the default IPs of all the virtual machines spun up as part of the VMmark 4 tiles.

Login with the default user:

  • user: root
  • password: vmmark4
Login to the vmmark 4 primeclient
Login to the vmmark 4 primeclient

The IP address the guide mentions or suggests is the following:

  • 198.18.4.251/16

Save the changes to your interface, and then we need to reboot the VM. You can do that from the terminal using:

reboot now

Below is a screenshot of the advanced network configuration under Applications and then editing the 2nd interface. Here, I am setting the IP for the default network used in VMmark4.

Configuring the network ip address on the internal network interface
Configuring the network ip address on the internal network interface

Also, set your timezone after configuring the network and then reboot. The reboot will instantiate the new network settings and timezone.

Set timezone and reboot
Set timezone and reboot

4. Configure as the Prime Client

Next, after the VM reboots, we need to configure it as the Prime client. This turns the VM into the orchestrator of the operations from which you do all the benchmark runs.

There is a simple command to do this. To make it the prime client, run the following command from a terminal session:

make-prime.sh <ip of your PrimeClient VM>
Make the virtual machine the prime client
Make the virtual machine the prime client

5. Setup passwordless SSH

Next, on the PrimeClient, we will set up passwordless SSH to our ESXi hosts and vCenter Server. It will use this as it is orchestrating the cloning and other things with the benchmark run.

VMmark-Configure-Passworless-SSH.exp <ESXI host IP>
VMmark-Configure-Passworless-SSH.exp <vCenter Server IP>
Setting passwordless authentication for the primeclient
Setting passwordless authentication for the primeclient

6. Run the VMmark 4 Quickstart

Once we have this initial configuration completed, we can run the VMmark 4 quickstart. Below is an example command line of how you run the VMmark 4 quickstart. Basically, you will just fill in the variables below with those appropriate for your environment.

Here are the required parameters you need to fill in:

--vcenter_ip '<ip_addr>'
--vcenter_password '<password>'
--datacenter '<datacenter>'
--cluster '<cluster>'
--client_cluster '<cluster2>'
--tile_number 1
--provisioning_source '<template-VM>'
--datastore '<datastore_name>'
--client_datastore '<client_datastore>'
--infra_datastore '<different_datastore>'
---network_label 'testbed'

Below is an example:

OUTPUT=<output_file>
nohup /root/VMmark4/tools/vmmark4service --mode quick_start --vcenter_ip <ip_addr> \
--vcenter_password '<password>' --datacenter <datacenter> --cluster <sut_cluster> \
--client_cluster <client_cluster> --tile_number <number_of_tiles> --provisioning_source <template-VM VMmark-4.0.1-208> \
--datastore <datastore_name> --client_datastore <client_datastore> \
--infra_datastore '<different_datastore>' --quick_start_options <quick_start_options> \
--network_label <private_network> -nst 'standard' --runtime_seconds <runtime_in_sec>  > $OUTPUT 2>&1 &
Run the quick start command in vmmark 4
Run the quick start command in vmmark 4

Once you fill in the required parameters and run the command, you will see activity kick off:

Provisioning of benchmark vms by vmmark 4 begins
Provisioning of benchmark vms by vmmark 4 begins

Below, we can see the cloning activity in the vSphere Client.

You will see the cloning process start in the vsphere client
You will see the cloning process start in the vsphere client

If you go back to the console of the PrimeClient VM, you will see that once the VMs are spun up, it will check and test connectivity to the benchmark VMs. You may see errors as things get started up but these should go away.

It will check and test connectivity with the benchmark vms
It will check and test connectivity with the benchmark vms

7. Interesting home lab challenges

I was playing around with VMmark 4 in the home lab on a Minisforum MS-01 mini PC that is powering my home lab at this time. This is being used to test performance on a Terramaster F8 SSD Plus with NVMe storage. I ran into an issue where the configured vCPUs that 3 of the workload VMs were trying to provision was outside of what the hardware was capable of.

By default, the workload spec file provisions VMs with the following (this is found in the /root/VMmark4/source/ directory:

{
    "DS35DB" : {"vCPU" : 24, "mem" : 49152, "disk":[256000,16384]},
    "DS35WebA" : {"vCPU" : 6, "mem" : 512},
    "DS35WebB" : {"vCPU" : 6, "mem" : 512},
    "DS35WebC" : {"vCPU" : 6, "mem" : 512},
    "AuctionWebA" : {"vCPU" : 4, "mem" : 12288},
    "AuctionWebB" : {"vCPU" : 4, "mem" : 12288},
    "AuctionWebC" : {"vCPU" : 4, "mem" : 12288},
    "AuctionWebDNosql" : {"vCPU" : 4, "mem" : 20480, "disk" : [85000]},
    "AuctionWebEDB" : {"vCPU" : 4, "mem" : 16384, "disk" : [25000]},
    "AuctionWebF" : {"vCPU" : 2, "mem" : 8192},
    "AuctionAppA" : {"vCPU" : 4, "mem" : 8192},
    "AuctionAppB" : {"vCPU" : 4, "mem" : 8192},
    "AuctionAppC" : {"vCPU" : 4, "mem" : 8192},
    "AuctionKA" : {"vCPU" : 8, "mem" : 32768},
    "AuctionKB" : {"vCPU" : 8, "mem" : 32768},
    "AuctionKC" : {"vCPU" : 8, "mem" : 32768},
    "AuctionKD" : {"vCPU" : 8, "mem" : 32768},
    "NoSQLBenchA" : {"vCPU" : 8, "mem" : 8192},
    "NoSQLBenchB" : {"vCPU" : 8, "mem" : 8192},
    "NoSQLBenchC" : {"vCPU" : 8, "mem" : 8192},
    "SocialNetwork" : {"vCPU" : 36, "mem" : 16384, "disk":[51200]},
    "Client" : {"vCPU": 64, "mem": 98304},
    "Standby" : {"vCPU": 1, "mem": 2048},
    "Deploy" : {"vCPU" : 1, "mem" : 4096, "disk":[20000,10000]}
}

However, the MS-01 and probably many servers can’t do 64 vCPUs on the client VM, or 24 vCPUs on the DS35DB, or 36 vCPUs on the SocialNetwork workload. So I hacked this file to the following:

{
    "DS35DB" : {"vCPU" : 14, "mem" : 49152, "disk":[256000,16384]},
    "DS35WebA" : {"vCPU" : 6, "mem" : 512},
    "DS35WebB" : {"vCPU" : 6, "mem" : 512},
    "DS35WebC" : {"vCPU" : 6, "mem" : 512},
    "AuctionWebA" : {"vCPU" : 4, "mem" : 12288},
    "AuctionWebB" : {"vCPU" : 4, "mem" : 12288},
    "AuctionWebC" : {"vCPU" : 4, "mem" : 12288},
    "AuctionWebDNosql" : {"vCPU" : 4, "mem" : 20480, "disk" : [85000]},
    "AuctionWebEDB" : {"vCPU" : 4, "mem" : 16384, "disk" : [25000]},
    "AuctionWebF" : {"vCPU" : 2, "mem" : 8192},
    "AuctionAppA" : {"vCPU" : 4, "mem" : 8192},
    "AuctionAppB" : {"vCPU" : 4, "mem" : 8192},
    "AuctionAppC" : {"vCPU" : 4, "mem" : 8192},
    "AuctionKA" : {"vCPU" : 8, "mem" : 32768},
    "AuctionKB" : {"vCPU" : 8, "mem" : 32768},
    "AuctionKC" : {"vCPU" : 8, "mem" : 32768},
    "AuctionKD" : {"vCPU" : 8, "mem" : 32768},
    "NoSQLBenchA" : {"vCPU" : 8, "mem" : 8192},
    "NoSQLBenchB" : {"vCPU" : 8, "mem" : 8192},
    "NoSQLBenchC" : {"vCPU" : 8, "mem" : 8192},
    "SocialNetwork" : {"vCPU" : 14, "mem" : 16384, "disk":[51200]},
    "Client" : {"vCPU": 14, "mem": 98304},
    "Standby" : {"vCPU": 1, "mem": 2048},
    "Deploy" : {"vCPU" : 1, "mem" : 4096, "disk":[20000,10000]}
}

Also, I enabled NVMe tiered memory to have enough RAM available for the tests. This will likely affect performance of the benchmark. As I saw this messaging as well about Tiered Host High Active DRAM memory usage.

Enabled tiered memory on the ms 01 and was able to have enough for the vmmark 4 benchmark
Enabled tiered memory on the ms 01 and was able to have enough for the vmmark 4 benchmark

However, both of these “hacks” were able to get me past errors that stopped the benchmark runs, either due to the VMs not powering on due to the workload spec being too high or running out of memory.

Vmmark 4 zero errors recorded
Vmmark 4 zero errors recorded
Taxing the ms 01 cpus
Taxing the ms 01 cpus

Once the run is completed, inspect the results files:

  • Results are stored in subdirectories under the /root/VMmark4/ directory:
    • Provisioning results are in the /root/VMmark4/provision directory.
    • Benchmark results are stored in subdirectories under the /root/VMmark4/results directory.

Workload output files have a .wrf extension.

  • To see the workload output for Standby0, from the relevant results directory, run:
    • cat Standby0.wrf
  • If there was an error during execution of the benchmark that isnสนt shown in the workload .wrf file, the
    • VMmark4-STAX.log might be helpful. From the relevant results directory run: less VMmark4-STAX

8. Delete the VMmark 4 VMs and clean up

Once you are finished with the VMmark 4 benchmark, you can clean up easily with a built-in script that is provided to delete the virtual machines that were cloned and provisioned as part of the testing. Navigate to the /root/VMmark4/tools directory and then run the following command:

/root/VMmark4/tools/vmmark4service --mode delete_all_vmmark4 \
--vcenter_ip $VC_IP --vcenter_username $VC_USERNAME \
--vcenter_password $VC_PASSWORD --datacenter $VC_DATACENTER \
--cluster $CLUSTER --datastore $DATASTORE --csi_datastore $CSI_DATASTORE \
--tile_number $TILE_NUMBER | tee <output_file>

Wrapping up

I hope this guide will help any who may want a short and concise walkthrough of how to run VMmark 4 as I think the guide and other information out there leaves out a lot of the steps and are a bit confusing. There are some challenges on non-enterprise grade hardware as there are some very high-level specs configured on the various workloads in the VMmark tiles.

Subscribe to VirtualizationHowto via Email ๐Ÿ””

Enter your email address to subscribe to this blog and receive notifications of new posts by email.



Brandon Lee

Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com, and a 7-time VMware vExpert, with over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, He has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family. Also, he goes through the effort of testing and troubleshooting issues, so you don't have to.

Related Articles

Leave a Reply

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