【原创】基准测试工具sysbench安装和使用
sysbench介绍
SysBench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。它主要包括以下几种方式的测试:
- cpu性能
- 磁盘io性能
- 线程调度性能
- 互斥锁性能
- 数据库性能(OLTP基准测试)
- 内存性能
目前sysbench主要支持 MySQL、pgsq、Oracle 这3种数据库。
sysbench在github的版本分为两个分支:0.4和0.5。0.4的最新版本是0.4.12,也是我使用的版本。
github:https://github.com/akopytov/sysbench
安装环境
操作系统:VMware虚拟CentOS 7
数据库:MySQL 5.6.24
安装步骤
- github下载sysbench的源码zip包:sysbench-0.4.zip到本地目录,如:/home/mahj/software目录下;
- 在/home/mahj/software目录下运行命令:unzip sysbench-0.4.zip,解压zip包,会生成sysbench-0.4目录;
- 进入sysbench-0.4目录,运行命令:./autogen.sh。这一步可能会报错:automake 1.10.x (aclocal) wasn’t found, exiting。这说明你的操作系统没有安装automake,运行命令:yum install automake.noarch,即可安装。然后再运行./autogen.sh命令,又报错:libtoolize 1.4+ wasn’t found, exiting。说明你的操作系统没有安装libtool,运行命令:yum install libtool,即可安装。继续运行
- 运行make命令,可能会报错:drv_mysql.c:35:19: fatal error: mysql.h: No such file or directory。这是因为,你本机没有安装mysql的开发lib库导致的,运行命令:yum install mysql-community-devel.x86_64,即可安装。然后运行make命令,即可正确。
- 运行make install;
- 运行sysbench –help测试安装是否正常。
命令运行过程如下:
1 [root@bogon sysbench-0.4]# sh autogen.sh automake 1.10.x (aclocal) wasn't found, exiting [root@bogon sysbench-0.4]# yum install automake.noarch [root@bogon sysbench-0.4]# sh autogen.sh libtoolize 1.4+ wasn't found, exiting [root@bogon sysbench-0.4]# yum install libtool [root@bogon sysbench-0.4]# sh autogen.sh [root@bogon sysbench-0.4]# make Making all in doc make[1]: Entering directory `/home/mahj/software/sysbench-0.4/doc' Making all in xsl make[2]: Entering directory `/home/mahj/software/sysbench-0.4/doc/xsl' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/mahj/software/sysbench-0.4/doc/xsl' make[2]: Entering directory `/home/mahj/software/sysbench-0.4/doc' touch manual.html make[2]: Leaving directory `/home/mahj/software/sysbench-0.4/doc' make[1]: Leaving directory `/home/mahj/software/sysbench-0.4/doc' Making all in sysbench make[1]: Entering directory `/home/mahj/software/sysbench-0.4/sysbench' Making all in drivers make[2]: Entering directory `/home/mahj/software/sysbench-0.4/sysbench/drivers' Making all in mysql make[3]: Entering directory `/home/mahj/software/sysbench-0.4/sysbench/drivers/mysql' gcc -DHAVE_CONFIG_H -I. -I../../../config -I/usr/include/mysql -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -fPIC -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1 -I../../../sysbench -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -W -Wall -Wextra -Wpointer-arith -Wbad-function-cast -Wstrict-prototypes -Wnested-externs -Winline -funroll-loops -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wcast-align -pthread -O2 -ggdb3 -MT libsbmysql_a-drv_mysql.o -MD -MP -MF .deps/libsbmysql_a-drv_mysql.Tpo -c -o libsbmysql_a-drv_mysql.o `test -f 'drv_mysql.c' || echo './'`drv_mysql.c drv_mysql.c:35:19: fatal error: mysql.h: No such file or directory #include <mysql.h> ^ compilation terminated. make[3]: *** [libsbmysql_a-drv_mysql.o] Error 1 make[3]: Leaving directory `/home/mahj/software/sysbench-0.4/sysbench/drivers/mysql' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/mahj/software/sysbench-0.4/sysbench/drivers' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/mahj/software/sysbench-0.4/sysbench' make: *** [all-recursive] Error 1 [root@bogon sysbench-0.4]# yum install mysql-community-devel.x86_64 [root@bogon sysbench-0.4]# make [root@bogon sysbench-0.4]# make install [root@bogon sysbench-0.4]# sysbench --help
常用测试命令
- 帮助信息
sysbench --help
- CPU测试
sysbench --test=cpu --cpu-max-prime=2000 run 说明:通过计算2000以内的素数来测试CPU性能。
- 文件IO测试
- 准备文件数据
sysbench --test=fileio --num-threads=16 --file-total-size=10G prepare
- 运行测试
sysbench --test=fileio --num-threads=16 --init-rng=on --file-total-size=5G --file-test-mode=rndrw run
- 读写模式(file-test-mode)包括:
seqwr 顺序写入 seqrewr 顺序重写 seqrd 顺序读取 rndrd 随机读取 rndwr 随机写入 rndrw 混合随机读/写
- 清理测试准备的文件
sysbench --test=fileio --num-threads=16 --file-total-size=10G cleanup
- 线程调度测试
sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
- 互斥锁测试
sysbench --test=mutex --num-threads=16 --mutex-num=1024 --mutex-locks=10000 --mutex-loops=5000 run 说明:模拟所有线程在同一时刻并发运行,并都短暂请求互斥锁。
- 内存测试
sysbench --test=memory --num-threads=16 --memory-block-size=8192 --memory-total-size=1G run 说明:测试内存的连续读写性能。
- MySQL数据库测试
- 准备表
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=app-db --mysql-user=appuser prepare 说明:用appuser登陆,并在app-db数据库创建sbtest表,其中包含100000万条记录。
- 运行测试
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=app-db --mysql-user=appuser --max-time=60 --oltp-read-only=on --num-threads=8 run 说明:起8个线程,开启只读模式,执行60秒的测试。