Vdbench performance test on raw device or filesystem

Posted by Iceberg on August 23, 2021

Terminology

  • Master and Slave: Vdbench runs as two or more Java Virtual Machines (JVMs). The JVM that you start is the master. The master takes care of the parsing of all the parameters, it determines which workloads should run, and then will also do all the reporting. The actual workload is executed by one or more Slaves. A Slave can run on the host where the Master was started, or it can run on any remote host as defined in the parameter file.

  • Raw I/O workload parameters describe the storage configuration to be used and the workload to be generated. The parameters include General, Host Definition (HD), Replay Group (RG), Storage Definition (SD), Workload Definition (WD) and Run Definition (RD) and must always be entered in the order in which they are listed here. A Run is the execution of one workload requested by a Run Definition. Multiple Runs can be requested within one Run Definition.

  • File system Workload parameters describe the file system configuration to be used and the workload to be generated. The parameters include General, Host Definition (HD), File System Definition (FSD), File system Workload Definition (FWD) and Run Definition(RD) and must always be entered in the order in which they are listed here. A Run is the execution of one workload requested by a Run Definition. Multiple Runs can be requested within one Run Definition.

Install java

java is required by vdbench on both master and slave hosts.

1
2
3
4
5
6
$ apt install default-jre

$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.18.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.18.04, mixed mode, sharing)

Install vdbench

Vdbench is packaged as a zip file. Unzip the file and you’re ready to go.

1
2
3
4
5
6
7
$ ls -la vdbench50407.zip
-rw-r--r--. 1 root root 3073219 Aug 26 21:23 vdbench50407.zip

$ unzip vdbench50407.zip

$ file vdbench
vdbench: Bourne-Again shell script, ASCII text executable

Vdbench job file

The following is an example job file to run random read I/O for a minute on the raw block device of the remote host.

1
2
3
4
5
6
7
8
$ cat jobfile/dryrun.job
hd=default,vdbench=/home/tester/vdbench,shell=ssh,user=root
hd=host1,system=<slave-host-ip>
sd=sd1,host=host1,lun=/dev/rbd0,hitarea=10m,openflag=o_direct,size=20000m
wd=wd_random_rd1,sd=sd1,seekpct=100

# 4KB random read
rd=rd_4KB_randread,wd=wd_random_rd1,iorate=max,rdpct=100,xfersize=4K,elapsed=60,interval=10,th=1

Benchmark run and result

You can run the benchmark job with the following command.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ ./vdbench -f jobfile/dryrun.job
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50407 Tue June 05  9:49:29 MDT 2018
For documentation, see 'vdbench.pdf'.

22:06:52.177 input argument scanned: '-fjobfile/dryrun.job'
22:06:52.353 Starting slave: ssh <slave-host-ip> -l root /home/tester/vdbench/vdbench SlaveJvm -m <master-host-ip> -n <slave-host-ip>-10-210826-22.06.52.140 -l host1-0 -p 5570
22:06:53.123 Clock synchronization warning: slave host1-0 is 41 seconds out of sync. This can lead to heartbeat issues.
22:06:53.140 All slaves are now connected
22:06:54.002 Starting RD=rd_4KB_randread; I/O rate: Uncontrolled MAX; elapsed=60; For loops: rdpct=100 xfersize=4k threads=1

Aug 26, 2021    interval        i/o   MB/sec   bytes   read     resp     read    write     read    write     resp  queue  cpu%  cpu%
                               rate  1024**2     i/o    pct     time     resp     resp      max      max   stddev  depth sys+u   sys
22:07:04.055           1     5563.1    21.73    4096 100.00    0.157    0.157    0.000    10.89     0.00    0.342    0.9  16.5   7.6
22:07:14.011           2     7022.2    27.43    4096 100.00    0.127    0.127    0.000     7.54     0.00    0.108    0.9  10.7   7.5
22:07:24.009           3     7018.5    27.42    4096 100.00    0.128    0.128    0.000     9.67     0.00    0.087    0.9  10.9   8.2
22:07:34.009           4     7026.8    27.45    4096 100.00    0.127    0.127    0.000     6.99     0.00    0.105    0.9  10.7   7.9
22:07:44.008           5     7264.4    28.38    4096 100.00    0.123    0.123    0.000     7.75     0.00    0.082    0.9  10.7   7.7
22:07:54.014           6     7311.4    28.56    4096 100.00    0.122    0.122    0.000     7.21     0.00    0.076    0.9  10.5   7.4
22:07:54.024     avg_2-6     7128.7    27.85    4096 100.00    0.126    0.126    0.000     9.67     0.00    0.092    0.9  10.7   7.7
22:07:54.445 Vdbench execution completed successfully. Output directory: /data/vdbench_test/output

The result is saved in output directory by default. You can also check the result summary by opening “summary.html” in a browser.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ ls output/
config.html    flatfile.html   host1-0.html         host1.html               logfile.html   parmscan.html       sd1.html   status.html   swat_mon_total.txt  totals.html errorlog.html  histogram.html  host1-0.stdout.html  host1.var_adm_msgs.html  parmfile.html  sd1.histogram.html  skew.html  summary.html  swat_mon.txt

$ cat output/summary.html
<title>Vdbench output/summary.html</title><pre>
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Vdbench summary report, created 22:06:52 Aug 26 2021 UTC (22:06:52 Aug 26 2021 UTC)

Link to logfile:                 <A HREF="logfile.html">logfile</A>
Run totals:                      <A HREF="totals.html">totals</A>
Vdbench status:                  <A HREF="status.html">status</A>
Copy of input parameter files:   <A HREF="parmfile.html">parmfile</A>
Copy of parameter scan detail:   <A HREF="parmscan.html">parmscan</A>
Link to errorlog:                <A HREF="errorlog.html">errorlog</A>
Link to flatfile:                <A HREF="flatfile.html">flatfile</A>

Link to HOST reports:            <A HREF="host1.html">host1</A>
Link to response time histogram: <A HREF="histogram.html">histogram</A>
Link to workload skew report:    <A HREF="skew.html">skew</A>
Link to SD reports:              <A HREF="sd1.html">sd1</A>

Link to Run Definitions:         <A HREF="#_463345942">rd_4KB_randread For loops: rdpct=100 xfersize=4k threads=1</A>

Link to config output:           <A HREF="config.html">config</A>

<a name="_463345942"></a><i><b>22:06:54.002 Starting RD=rd_4KB_randread; I/O rate: Uncontrolled MAX; elapsed=60; For loops: rdpct=100 xfersize=4k threads=1</b></i>


Aug 26, 2021    interval        i/o   MB/sec   bytes   read     resp     read    write     read    write     resp  queue  cpu%  cpu%
                               rate  1024**2     i/o    pct     time     resp     resp      max      max   stddev  depth sys+u   sys
22:07:04.052           1     5563.1    21.73    4096 100.00    0.157    0.157    0.000    10.89     0.00    0.342    0.9  16.5   7.6
22:07:14.010           2     7022.2    27.43    4096 100.00    0.127    0.127    0.000     7.54     0.00    0.108    0.9  10.7   7.5
22:07:24.008           3     7018.5    27.42    4096 100.00    0.128    0.128    0.000     9.67     0.00    0.087    0.9  10.9   8.2
22:07:34.008           4     7026.8    27.45    4096 100.00    0.127    0.127    0.000     6.99     0.00    0.105    0.9  10.7   7.9
22:07:44.008           5     7264.4    28.38    4096 100.00    0.123    0.123    0.000     7.75     0.00    0.082    0.9  10.7   7.7
22:07:54.014           6     7311.4    28.56    4096 100.00    0.122    0.122    0.000     7.21     0.00    0.076    0.9  10.5   7.4
22:07:54.023     avg_2-6     7128.7    27.85    4096 100.00    0.126    0.126    0.000     9.67     0.00    0.092    0.9  10.7   7.7
22:07:54.445 Vdbench execution completed successfully

Reference