How to run vdbench benchmark on any HCI with X-Ray

Many storage performance testers are familiar with vdbench, and wish to use it to test Hyper-Converged (HCI) performance. To accurately performance test HCI you need to deploy workloads on all HCI nodes. However, deploying multiple VMs and coordinating vdbench can be tricky, so with X-ray we provide an easy way to run vdbench at scale. Here’s how to do it.

Step by step instructions to add vdbench to X-Ray.

  1. Download vdbench from the Oracle site
  2. Get the vdbench x-ray test scenario from github
    • (You can clone the repository to a laptop, then upload to your X-Ray server)
  3. Rename the zip file downloaded from Oracle to The X-ray scenerio relies on the zip file having exactly this name.
  4. Go to your X-ray server and upload the file and the vdbench x-ray scenario files to the x-ray server.
  5. Ensure that VMs created on the cluster will have access to the internet, they will need to be able to install a JVM in order to run vdbench.

Then simply run the vdbench workload against your HCI appliance just like you would with the build-in X-ray tests. The result should look something like this

Alternatively use the built-in Grafana display

vdbench workload read IOPS
vdbench workload write IOPS

Once you have the basics working, feel free to write whatever vdbench file you desire, and have X-ray provision multiple Linux vms then deploy, run the and display results of the vdbench workload for you.

This example vdbench file is supplied with the scenario.

2 comments on “How to run vdbench benchmark on any HCI with X-Ray

  • Hello,
    I can not operating vdbench of xray.
    I checked below log to xray. Could you help me?

    Xray stop FILL : Prefilling of step.
    2022-02-16 06:20:26,439Z WARNING RPC failed. Retrying after ’16’ seconds (17 of 20 attempts)
    2022-02-16 06:20:42,459Z ERROR Exception in RPC request
    Traceback (most recent call last):
    File “/usr/lib/python2.7/site-packages/curie/”, line 243, in _send_rpc_sync
    File “/usr/lib/python2.7/site-packages/requests/”, line 116, in post
    return request(‘post’, url, data=data, json=json, **kwargs)
    File “/usr/lib/python2.7/site-packages/requests/”, line 60, in request
    return session.request(method=method, url=url, **kwargs)
    File “/usr/lib/python2.7/site-packages/requests/”, line 533, in request
    resp = self.send(prep, **send_kwargs)
    File “/usr/lib/python2.7/site-packages/requests/”, line 646, in send
    r = adapter.send(request, **kwargs)
    File “/usr/lib/python2.7/site-packages/requests/”, line 516, in send
    raise ConnectionError(e, request=request)

    • Can you post your test.yml file? Sometimes this error comes from using large disks and the prefill stage times out.


Leave a Comment