Vdbench performance test on raw device
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.
$ 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.
$ 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.
$ 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/sdd,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.
$ ./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.
$ 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