vdbench FAQ
Oracle维护的一个磁盘IO性能工具,用于产生磁盘IO 负载测试磁盘性能和数据完整性。
目前官方不再开发该工具。
官方维护三个版本:
- 5.04.07
- 5.04.06
- 5.04.05
主流使用的5.04.06和5.04.07
使用前准备
下载解压即可使用。
一般不需要编译,如果运行环境存在,可以直接运行。
二进制包下载地址:https://www.oracle.com/downloads/server-storage/vdbench-downloads.html
源码下载地址: https://www.oracle.com/downloads/server-storage/vdbench-source-downloads.html
测试运行环境:
#给脚本赋予运行权限
]# chmod +x vdbench
#执行测试
]# ./vdbench -t
常见问题
/bin/csh: bad interpreter: No such file or directory
问题
vdbench50405]# ./vdbench -t
-bash: ./vdbench: /bin/csh: bad interpreter: No such file or directory
原因
vdbench 5.04.05的vdbench脚本是c shell script文件。
解决办法
方法1: 安装csh
# Debian衍生版
]# sudo apt install csh
# Rhel衍生版
]# sudo yum -y install tcsh
方法2: 使用版本 5.04.06或 5.04.07
5.04.06和 5.04.07使用bash script。
vdbench50406]# file vdbench
vdbench: Bourne-Again shell script, ASCII text executable
vdbench50407]# file vdbench
vdbench: Bourne-Again shell script, ASCII text executable
open failed for xxx
问题
使用vdbench测试过程中,测试中断,报错信息如下:
19:37:41.155 19:37:44.813 error: 20
19:37:41.155 19:37:44.813 file_open(), open /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file failed
19:37:41.155 19:37:44.814 error: 20
19:37:41.155 19:37:44.814 file_open(), open /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0003.file failed
19:37:41.156 19:37:44.814 Maximum native memory allocation: 1,048,576; Current allocation: 1,048,576
19:37:41.156 19:37:44.814 Maximum native memory allocation: 1,048,576; Current allocation: 1,048,576
19:37:41.156 19:37:44.814 error: 20
19:37:41.156 19:37:44.814
19:37:41.156 19:37:44.814 open failed for /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file
19:37:41.156 19:37:44.814
19:37:41.158 java.lang.RuntimeException: open failed for /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file
原因
默认vdbench限制了java内存使用量,测试期间java运行内存不足才导致测试异常中断。
解决办法:
增大vdbench运行脚本的java内存参数
[root@node40 ~]# cat vdbench50406/vdbench
if [ "$1" == "SlaveJvm" ]; then
$java -client -Xmx10240m -Xms128m -cp $cp Vdb.SlaveJvm $*
exit $?
else
$java -client -Xmx10240m -Xms64m -cp $cp Vdb.Vdbmain $*
exit $?
fi
注:Xmx表示jvm最大内存分配池,Xms表示初始内存分配池
进程初始以Xms内存大小启动,当空余堆内存小于40%时,jvm会增大内存至Xmx;当空余堆内存大于70%时,jvm会减少内存至Xms;
为避免每次GC后JVM重新分配内存,可以将Xmx和Xms设置为相同的参数值
Minimum required Java version for Vdbench is 1.7.0(或1.5.0)
问题
vdbench 5.04.05和vdbench 5.04.06出现java版本检测不合法;
5.04.05:
vdbench50405]# ./vdbench -t
Vdbench distribution: vdbench504
For documentation, see 'vdbench.pdf'.
*
*
*
* Minimum required Java version for Vdbench is 1.5.0;
* You are currently running 11.0.15
* Vdbench terminated.
*
*
*
CTRL-C requested. vdbench terminating
5.04.06:
vdbench50406]# ./vdbench -t
Vdbench distribution: vdbench504
For documentation, see 'vdbench.pdf'.
*
*
*
* Minimum required Java version for Vdbench is 1.7.0;
* You are currently running 11.0.15
* Vdbench terminated.
*
*
*
CTRL-C requested. vdbench terminating
而vdbench 5.04.07可以正常使用。
查看vdbench 5.04.07源码,其已经移除java版本检测checkJavaVersion();
。
移除原因为:从java 1.10.x开始,java命名规则的改变;详细请参考版本发布说明。
// Removed as per 50407 because of java 1.10.x
//checkJavaVersion();
//....
private static void checkJavaVersion()
{
if (common.get_debug(common.USE_ANY_JAVA))
return;
if (!JVMCheck.isJREValid(System.getProperty("java.version"), 1, 7, 0))
{
System.out.print("*\n*\n*\n");
System.out.println("* Minimum required Java version for Vdbench is 1.7.0; \n" +bash
"* You are currently running " + System.getProperty("java.version") +
"\n* Vdbench terminated.");
System.out.println("*\n*\n*\n");
System.exit(-99);
}
}
版本发布说明oracle vdbench 50407rc29
50407rc29
The check to make sure you are running java 1.7 or higher has been removed.
原因
vdbench 5.04.05和vdbench 5.04.06中有java版本检测
解决办法
方法1:使用vdbench 5.04.07
方法2:在vdbench 5.04.05和vdbench 5.04.06移除于java版本检测,再打包vdbench.jar
以vdbench 5.04.06为例,
下载vdbench 5.04.06源码包,解压到linux系统
]# unzip vdbench50406.src.zip
]# ll
drwxr-xr-x 8 root root 87 Apr 27 2020 src
-rw-r--r-- 1 root root 848041 Jul 20 09:20 vdbench50406.src.zip
]# cd src/
src]# ll
drwxr-xr-x 2 root root 4096 Apr 27 2020 Jni
drwxr-xr-x 2 root root 4096 Apr 27 2020 User
drwxr-xr-x 2 root root 4096 Apr 27 2020 Utils
drwxr-xr-x 2 root root 8192 Apr 27 2020 Vdb
drwxr-xr-x 2 root root 4096 Apr 27 2020 VdbComp
src]# cd Vdb/
// 找到第245行的checkJavaVersion函数,并注释掉
Vdb]# vim Vdbmain.java
...
// Removed checkJavaVersion because of java 1.10.x
// checkJavaVersion();
...
Vdb]# cd ..
//将所有的java文件编译为class文件
src]#javac */*.java
//删除源码包的java文件
src]# rm -rf */*.java
// 删除Jni目录
src]#rm -rf Jni
//打包为jar文件
src]# jar cvfM vdbench.jar *
//查看生成的jar文件
src]# ll vdbench.jar
-rw-r--r-- 1 root root 961748 Jul 20 09:47 vdbench.jar
将生成vdbench.jar替换vdbench 5.04.06二进制包中的vdbench.jar