首页 > 数据库 > MySQL > 压力测试sysbench安装及参数介绍
一、sysbench压力测试工具简介:
sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下操作都将以支持MySQL数据库为例进行。
1. sysbench工具安装:
默认支持MySQL,如果需要测试Oracle/PostgreSQL,则在configure时需要加上–with-oracle或者–with-pgsql参数.
1.1 安装环境
CentOS release 6.3 (Final) 以及 redhat5.5
MySQL 5.6.13 以及 5.6.24
MySQL_HOME=/usr/local/mysql/
Sysbench 0.4.12
1.2 下载安装包
# wget http://sourceforge.net/projects/sysbench/sysbench-0.4.12.tar.gz
1.3 编译安装
# tar –zxvf sysbench-0.4.12.tar.gz
进入解压缩包sysbench-0.4.12,并执行脚本autogen.sh
# cd sysbench-0.4.12
# ./autogen.sh
关键的三步:configure && make && make install
首先是./configure命令,sysbench默认是支持MySQL的benchmarking的,如果不加任何选项则要求保证MySQL的安装路径都是默认的标准路径,headfile位于/usr/include目录下,libraries位于/usr/lib/目录下。因为我的MySQL是源码编译安装的,安装路径是放在/usr/local/mysql下,所以这里要添加相应的选项命令:
[root@wg2 ~]# find / -name mysql
/usr/lib64/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/include/mysql
/usr/include/mysql/mysql
/etc/logrotate.d/mysql
/etc/rc.d/init.d/mysql
/mysql_log/sysbench-0.4.12/sysbench/drivers/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/var/lock/subsys/mysql
[root@wg2 sysbench-0.4.12]# ./configure --with-mysql-includes=/usr/include/mysql/ --with-mysql-libs=/var/lib/mysql
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to compile with MySQL support... (cached) yes
checking whether to compile with Oracle support... (cached) no
checking whether to compile with PostgreSQL support... (cached) no
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking dependency style of gcc... gcc3
checking whether SHM_HUGETLB is declared... yes
checking whether O_SYNC is declared... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ANSI C... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for a sed that does not truncate output... /bin/sed
checking for egrep... grep -E
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for g77... g77
checking whether we are using the GNU Fortran 77 compiler... yes
checking whether g77 accepts -g... yes
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for g77 option to produce PIC... -fPIC
checking if g77 PIC flag -fPIC works... yes
checking if g77 static flag -static works... yes
checking if g77 supports -c -o file.o... yes
checking whether the g77 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for xsltproc... xsltproc
checking whether xsltproc works... yes
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for cc_r... gcc
checking for sqrt in -lm... yes
checking MySQL includes... (cached) /usr/include/mysql/
checking MySQL libraries... (cached) /var/lib/mysql
checking libaio.h usability... no
checking libaio.h presence... no
checking for libaio.h... no
checking for malloc in -lumem... no
checking for malloc in -lmtmalloc... no
checking for ANSI C header files... (cached) yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking math.h usability... yes
checking math.h presence... yes
checking for math.h... yes
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking sched.h usability... yes
checking sched.h presence... yes
checking for sched.h... yes
checking signal.h usability... yes
checking signal.h presence... yes
checking for signal.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/aio.h usability... no
checking sys/aio.h presence... no
checking for sys/aio.h... no
checking sys/ipc.h usability... yes
checking sys/ipc.h presence... yes
checking for sys/ipc.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking sys/shm.h usability... yes
checking sys/shm.h presence... yes
checking for sys/shm.h... yes
checking thread.h usability... no
checking thread.h presence... no
checking for thread.h... no
checking for unistd.h... (cached) yes
checking for inline... inline
checking for off_t... yes
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for _LARGE_FILES value needed for large files... no
checking for size_t... (cached) yes
checking size of size_t... 8
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for getpagesize... yes
checking for working mmap... yes
checking whether strerror_r is declared... yes
checking for strerror_r... yes
checking whether strerror_r returns char *... no
checking whether clock_gettime is declared... yes
checking for library containing clock_gettime... -lrt
checking for alarm... yes
checking for fdatasync... yes
checking for gettimeofday... yes
checking for lrand48... yes
checking for memalign... yes
checking for memset... yes
checking for posix_memalign... yes
checking for pthread_yield... yes
checking for setvbuf... yes
checking for sqrt... yes
checking for strdup... yes
checking for thr_setconcurrency... no
checking for valloc... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/xsl/Makefile
config.status: creating doc/xsl/catalog.xml
config.status: creating doc/Makefile
config.status: creating sysbench/Makefile
config.status: creating sysbench/drivers/Makefile
config.status: creating sysbench/drivers/mysql/Makefile
config.status: creating sysbench/drivers/oracle/Makefile
config.status: creating sysbench/drivers/pgsql/Makefile
config.status: creating sysbench/tests/Makefile
config.status: creating sysbench/tests/cpu/Makefile
config.status: creating sysbench/tests/fileio/Makefile
config.status: creating sysbench/tests/memory/Makefile
config.status: creating sysbench/tests/threads/Makefile
config.status: creating sysbench/tests/mutex/Makefile
config.status: creating sysbench/tests/oltp/Makefile
config.status: creating config/config.h
config.status: executing depfiles commands
[root@wg2 sysbench-0.4.12]# make
Making all in doc
make[1]: Entering directory `/mysql_log/sysbench-0.4.12/doc'
Making all in xsl
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/doc/xsl'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/doc/xsl'
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/doc'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/doc'
make[1]: Leaving directory `/mysql_log/sysbench-0.4.12/doc'
Making all in sysbench
make[1]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench'
Making all in drivers
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
Making all in mysql
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/drivers/mysql'
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../config -I/usr/include/mysql/ -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../../../sysbench -pthread -g -O2 -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; \
then mv -f ".deps/libsbmysql_a-drv_mysql.Tpo" ".deps/libsbmysql_a-drv_mysql.Po"; else rm -f ".deps/libsbmysql_a-drv_mysql.Tpo"; exit 1; fi
rm -f libsbmysql.a
ar cru libsbmysql.a libsbmysql_a-drv_mysql.o
ranlib libsbmysql.a
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/drivers/mysql'
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
Making all in tests
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
Making all in cpu
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/cpu'
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../../../sysbench -pthread -g -O2 -MT libsbcpu_a-sb_cpu.o -MD -MP -MF ".deps/libsbcpu_a-sb_cpu.Tpo" -c -o libsbcpu_a-sb_cpu.o `test -f 'sb_cpu.c' || echo './'`sb_cpu.c; \
then mv -f ".deps/libsbcpu_a-sb_cpu.Tpo" ".deps/libsbcpu_a-sb_cpu.Po"; else rm -f ".deps/libsbcpu_a-sb_cpu.Tpo"; exit 1; fi
rm -f libsbcpu.a
ar cru libsbcpu.a libsbcpu_a-sb_cpu.o
ranlib libsbcpu.a
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/cpu'
Making all in fileio
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/fileio'
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../../../sysbench -pthread -g -O2 -MT libsbfileio_a-sb_fileio.o -MD -MP -MF ".deps/libsbfileio_a-sb_fileio.Tpo" -c -o libsbfileio_a-sb_fileio.o `test -f 'sb_fileio.c' || echo './'`sb_fileio.c; \
then mv -f ".deps/libsbfileio_a-sb_fileio.Tpo" ".deps/libsbfileio_a-sb_fileio.Po"; else rm -f ".deps/libsbfileio_a-sb_fileio.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../../../sysbench -pthread -g -O2 -MT libsbfileio_a-crc32.o -MD -MP -MF ".deps/libsbfileio_a-crc32.Tpo" -c -o libsbfileio_a-crc32.o `test -f 'crc32.c' || echo './'`crc32.c; \
then mv -f ".deps/libsbfileio_a-crc32.Tpo" ".deps/libsbfileio_a-crc32.Po"; else rm -f ".deps/libsbfileio_a-crc32.Tpo"; exit 1; fi
rm -f libsbfileio.a
ar cru libsbfileio.a libsbfileio_a-sb_fileio.o libsbfileio_a-crc32.o
ranlib libsbfileio.a
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/fileio'
Making all in memory
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/memory'
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../../../sysbench -pthread -g -O2 -MT libsbmemory_a-sb_memory.o -MD -MP -MF ".deps/libsbmemory_a-sb_memory.Tpo" -c -o libsbmemory_a-sb_memory.o `test -f 'sb_memory.c' || echo './'`sb_memory.c; \
then mv -f ".deps/libsbmemory_a-sb_memory.Tpo" ".deps/libsbmemory_a-sb_memory.Po"; else rm -f ".deps/libsbmemory_a-sb_memory.Tpo"; exit 1; fi
rm -f libsbmemory.a
ar cru libsbmemory.a libsbmemory_a-sb_memory.o
ranlib libsbmemory.a
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/memory'
Making all in threads
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/threads'
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../../../sysbench -pthread -g -O2 -MT libsbthreads_a-sb_threads.o -MD -MP -MF ".deps/libsbthreads_a-sb_threads.Tpo" -c -o libsbthreads_a-sb_threads.o `test -f 'sb_threads.c' || echo './'`sb_threads.c; \
then mv -f ".deps/libsbthreads_a-sb_threads.Tpo" ".deps/libsbthreads_a-sb_threads.Po"; else rm -f ".deps/libsbthreads_a-sb_threads.Tpo"; exit 1; fi
rm -f libsbthreads.a
ar cru libsbthreads.a libsbthreads_a-sb_threads.o
ranlib libsbthreads.a
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/threads'
Making all in mutex
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/mutex'
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../../../sysbench -pthread -g -O2 -MT libsbmutex_a-sb_mutex.o -MD -MP -MF ".deps/libsbmutex_a-sb_mutex.Tpo" -c -o libsbmutex_a-sb_mutex.o `test -f 'sb_mutex.c' || echo './'`sb_mutex.c; \
then mv -f ".deps/libsbmutex_a-sb_mutex.Tpo" ".deps/libsbmutex_a-sb_mutex.Po"; else rm -f ".deps/libsbmutex_a-sb_mutex.Tpo"; exit 1; fi
rm -f libsbmutex.a
ar cru libsbmutex.a libsbmutex_a-sb_mutex.o
ranlib libsbmutex.a
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/mutex'
Making all in oltp
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/oltp'
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../config -I./.. -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../../../sysbench -I/usr/include/mysql/ -pthread -g -O2 -MT libsboltp_a-sb_oltp.o -MD -MP -MF ".deps/libsboltp_a-sb_oltp.Tpo" -c -o libsboltp_a-sb_oltp.o `test -f 'sb_oltp.c' || echo './'`sb_oltp.c; \
then mv -f ".deps/libsboltp_a-sb_oltp.Tpo" ".deps/libsboltp_a-sb_oltp.Po"; else rm -f ".deps/libsboltp_a-sb_oltp.Tpo"; exit 1; fi
rm -f libsboltp.a
ar cru libsboltp.a libsboltp_a-sb_oltp.o
ranlib libsboltp.a
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/oltp'
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
Making all in .
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench'
if gcc -DHAVE_CONFIG_H -I. -I. -I../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../sysbench -pthread -g -O2 -MT sysbench.o -MD -MP -MF ".deps/sysbench.Tpo" -c -o sysbench.o sysbench.c; \
then mv -f ".deps/sysbench.Tpo" ".deps/sysbench.Po"; else rm -f ".deps/sysbench.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../sysbench -pthread -g -O2 -MT sb_timer.o -MD -MP -MF ".deps/sb_timer.Tpo" -c -o sb_timer.o sb_timer.c; \
then mv -f ".deps/sb_timer.Tpo" ".deps/sb_timer.Po"; else rm -f ".deps/sb_timer.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../sysbench -pthread -g -O2 -MT sb_options.o -MD -MP -MF ".deps/sb_options.Tpo" -c -o sb_options.o sb_options.c; \
then mv -f ".deps/sb_options.Tpo" ".deps/sb_options.Po"; else rm -f ".deps/sb_options.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../sysbench -pthread -g -O2 -MT sb_logger.o -MD -MP -MF ".deps/sb_logger.Tpo" -c -o sb_logger.o sb_logger.c; \
then mv -f ".deps/sb_logger.Tpo" ".deps/sb_logger.Po"; else rm -f ".deps/sb_logger.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I../config -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I../sysbench -pthread -g -O2 -MT db_driver.o -MD -MP -MF ".deps/db_driver.Tpo" -c -o db_driver.o db_driver.c; \
then mv -f ".deps/db_driver.Tpo" ".deps/db_driver.Po"; else rm -f ".deps/db_driver.Tpo"; exit 1; fi
/bin/sh ../libtool --tag=CC --mode=link gcc -pthread -g -O2 -o sysbench sysbench.o sb_timer.o sb_options.o sb_logger.o db_driver.o tests/fileio/libsbfileio.a tests/threads/libsbthreads.a tests/memory/libsbmemory.a tests/cpu/libsbcpu.a tests/oltp/libsboltp.a tests/mutex/libsbmutex.a drivers/mysql/libsbmysql.a -L/var/lib/mysql -lmysqlclient_r -lrt -lm
mkdir .libs
gcc -pthread -g -O2 -o sysbench sysbench.o sb_timer.o sb_options.o sb_logger.o db_driver.o tests/fileio/libsbfileio.a tests/threads/libsbthreads.a tests/memory/libsbmemory.a tests/cpu/libsbcpu.a tests/oltp/libsboltp.a tests/mutex/libsbmutex.a drivers/mysql/libsbmysql.a -L/var/lib/mysql -lmysqlclient_r -lrt -lm
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench'
make[1]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench'
make[1]: Entering directory `/mysql_log/sysbench-0.4.12'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/mysql_log/sysbench-0.4.12'
[root@wg2 sysbench-0.4.12]# make install
Making install in doc
make[1]: Entering directory `/mysql_log/sysbench-0.4.12/doc'
Making install in xsl
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/doc/xsl'
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/doc/xsl'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/doc/xsl'
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/doc/xsl'
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/doc'
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/doc'
make[3]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/share/doc/sysbench" || mkdir -p -- "/usr/local/share/doc/sysbench"
/usr/bin/install -c -m 644 'manual.html' '/usr/local/share/doc/sysbench/manual.html'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/doc'
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/doc'
make[1]: Leaving directory `/mysql_log/sysbench-0.4.12/doc'
Making install in sysbench
make[1]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench'
Making install in drivers
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
Making install in mysql
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/drivers/mysql'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/drivers/mysql'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/drivers/mysql'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/drivers/mysql'
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/drivers'
Making install in tests
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
Making install in cpu
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/cpu'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/cpu'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/cpu'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/cpu'
Making install in fileio
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/fileio'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/fileio'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/fileio'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/fileio'
Making install in memory
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/memory'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/memory'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/memory'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/memory'
Making install in threads
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/threads'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/threads'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/threads'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/threads'
Making install in mutex
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/mutex'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/mutex'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/mutex'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/mutex'
Making install in oltp
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/oltp'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests/oltp'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/oltp'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests/oltp'
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
make[4]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench/tests'
Making install in .
make[2]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench'
make[3]: Entering directory `/mysql_log/sysbench-0.4.12/sysbench'
test -z "/usr/local/bin" || mkdir -p -- "/usr/local/bin"
/bin/sh ../libtool --mode=install /usr/bin/install -c 'sysbench' '/usr/local/bin/sysbench'
/usr/bin/install -c sysbench /usr/local/bin/sysbench
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench'
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench'
make[1]: Leaving directory `/mysql_log/sysbench-0.4.12/sysbench'
make[1]: Entering directory `/mysql_log/sysbench-0.4.12'
make[2]: Entering directory `/mysql_log/sysbench-0.4.12'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/mysql_log/sysbench-0.4.12'
make[1]: Leaving directory `/mysql_log/sysbench-0.4.12'
[root@wg2 sysbench-0.4.12]#
安装成功,没有任何错误提示
2. sysbench支持的功能参数
首先,看看sysbench都支持哪些功能参数:
[root@db-master sysbench]# sysbench --help
Usage:
sysbench [general-options]... --test= [test-options]... command
General options:
--num-threads=N number of threads to use [1]
--max-requests=N limit for total number of requests [10000]
--max-time=N limit for total execution time in seconds [0]
--forced-shutdown=STRING amount of time to wait after --max-time before forcing shutdown [off]
--thread-stack-size=SIZE size of stack per thread [32K]
--init-rng=[on|off] initialize random number generator [off]
--test=STRING test to run
--debug=[on|off] print more debugging info [off]
--validate=[on|off] perform validation checks where possible [off]
--help=[on|off] print help and exit
--version=[on|off] print version and exit
Compiled-in tests:
fileio - File I/O test
cpu - CPU performance test
memory - Memory functions speed test
threads - Threads subsystem performance test
mutex - Mutex performance test
oltp - OLTP test
Commands: prepare run cleanup help version
See 'sysbench --test= help' for a list of options for each test.
Sysbench的测试主要包括以下几个方面:
1、磁盘io性能
2、cpu性能
3、内存分配及传输速度
4、POSIX线程性能
5、调度程序性能
6、数据库性能(OLTP基准测试).
2.1 测试fileio命令帮助:
[root@db-master ~]# sysbench --test=fileio help
sysbench 0.4.12: multi-threaded system evaluation benchmark
fileio options:
--file-num=N number of files to create [128]
--file-block-size=N block size to use in all IO operations [16384]
--file-total-size=SIZE total size of files to create [2G]
--file-test-mode=STRING test mode {seqwr, seqrewr, seqrd, rndrd, rndwr, rndrw}
--file-io-mode=STRING file operations mode {sync,async,fastmmap,slowmmap} [sync]
--file-async-backlog=N number of asynchronous operatons to queue per thread [128]
--file-extra-flags=STRING additional flags to use on opening files {sync,dsync,direct} []
--file-fsync-freq=N do fsync() after this number of requests (0 - don't use fsync()) [100]
--file-fsync-all=[on|off] do fsync() after each write operation [off]
--file-fsync-end=[on|off] do fsync() at the end of test [on]
--file-fsync-mode=STRING which method to use for synchronization {fsync, fdatasync} [fsync]
--file-merged-requests=N merge at most this number of IO requests if possible (0 - don't merge) [0]
--file-rw-ratio=N reads/writes ratio for combined test [1.5]
参数详解:
--file-num=N 代表生成测试文件的数量,默认为128。
--file-block-size=N 测试时所使用文件块的大小,如果想磁盘针对innodb存储引擎进行测试,可以将其设置为16384,即innodb存储引擎页的大小。默认为16384。
--file-total-size=SIZE 创建测试文件的总大小,默认为2G大小。
--file-test-mode=STRING 文件测试模式,包含:seqwr(顺序写), seqrewr(顺序读写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)。
--file-io-mode=STRING 文件操作的模式,sync(同步),async(异步),fastmmap(快速mmap),slowmmap(慢速mmap),默认为sync同步模式。
--file-async-backlog=N 对应每个线程队列的异步操作数,默认为128。
--file-extra-flags=STRING 打开文件时的选项,这是与API相关的参数。
--file-fsync-freq=N 执行fsync()函数的频率。fsync主要是同步磁盘文件,因为可能有系统和磁盘缓冲的关系。 0代表不使用fsync函数。默认值为100。
--file-fsync-all=[on|off] 每执行完一次写操作,就执行一次fsync。默认为off。
--file-fsync-end=[on|off] 在测试结束时执行fsync函数。默认为on。
--file-fsync-mode=STRING文件同步函数的选择,同样是和API相关的参数,由于多个操作系统对于fdatasync支持不同,因此不建议使用fdatasync。默认为fsync。
--file-merged-requests=N 大多情况下,合并可能的IO的请求数,默认为0。
--file-rw-ratio=N 测试时的读写比例,默认时为1.5,即可3:2。
2.2 测试cpu命令帮助:
[root@db-master ~]# sysbench --test=cpu help
sysbench 0.4.12: multi-threaded system evaluation benchmark
cpu options:
--cpu-max-prime=N upper limit for primes generator [10000]
参数详解:
--cpu-max-prime=N 用来选项指定最大的素数,具体参数可以根据CPU的性能来设置,默认为10000
2.3 测试memory命令帮助:
[root@db-master ~]# sysbench --test=memory help
sysbench 0.4.12: multi-threaded system evaluation benchmark
memory options:
--memory-block-size=SIZE size of memory block for test [1K]
--memory-total-size=SIZE total size of data to transfer [100G]
--memory-scope=STRING memory access scope {global,local} [global]
--memory-hugetlb=[on|off] allocate memory from HugeTLB pool [off]
--memory-oper=STRING type of memory operations {read, write, none} [write]
--memory-access-mode=STRING memory access mode {seq,rnd} [seq]
参数详解:
--memory-block-size=SIZE 测试内存块的大小,默认为1K
--memory-total-size=SIZE 数据传输的总大小,默认为100G
--memory-scope=STRING 内存访问的范围,包括全局和本地范围,默认为global
--memory-hugetlb=[on|off] 是否从HugeTLB池分配内存的开关,默认为off
--memory-oper=STRING 内存操作的类型,包括read, write, none,默认为write
--memory-access-mode=STRING 内存访问模式,包括seq,rnd两种模式,默认为seq
2.4 测试threads命令帮助:
[root@db-master ~]# sysbench --test=threads help
sysbench 0.4.12: multi-threaded system evaluation benchmark
threads options:
--thread-yields=N number of yields to do per request [1000]
--thread-locks=N number of locks per thread [8]
参数详解:
--thread-yields=N 指定每个请求的压力,默认为1000
--thread-locks=N 指定每个线程的锁数量,默认为8
2.5 测试mutex命令帮助:
[root@db-master ~]# sysbench --test=mutex help
sysbench 0.4.12: multi-threaded system evaluation benchmark
mutex options:
--mutex-num=N total size of mutex array [4096]
--mutex-locks=N number of mutex locks to do per thread [50000]
--mutex-loops=N number of empty loops to do inside mutex lock [10000]
参数详解:
--mutex-num=N 数组互斥的总大小。默认是4096
--mutex-locks=N 每个线程互斥锁的数量。默认是50000
--mutex-loops=N 内部互斥锁的空循环数量。默认是10000
2.6 测试oltp命令帮助:
[root@db-master ~]# sysbench --test=oltp help
sysbench 0.4.12: multi-threaded system evaluation benchmark
oltp options:
--oltp-test-mode=STRING test type to use {simple,complex,nontrx,sp} [complex]
--oltp-reconnect-mode=STRING reconnect mode {session,transaction,query,random} [session]
--oltp-sp-name=STRING name of store procedure to call in SP test mode []
--oltp-read-only=[on|off] generate only 'read' queries (do not modify database) [off]
--oltp-skip-trx=[on|off] skip BEGIN/COMMIT statements [off]
--oltp-range-size=N range size for range queries [100]
--oltp-point-selects=N number of point selects [10]
--oltp-simple-ranges=N number of simple ranges [1]
--oltp-sum-ranges=N number of sum ranges [1]
--oltp-order-ranges=N number of ordered ranges [1]
--oltp-distinct-ranges=N number of distinct ranges [1]
--oltp-index-updates=N number of index update [1]
--oltp-non-index-updates=N number of non-index updates [1]
--oltp-nontrx-mode=STRING mode for non-transactional test {select, update_key, update_nokey, insert, delete} [select]
--oltp-auto-inc=[on|off] whether AUTO_INCREMENT (or equivalent) should be used on id column [on]
--oltp-connect-delay=N time in microseconds to sleep after connection to database [10000]
--oltp-user-delay-min=N minimum time in microseconds to sleep after each request [0]
--oltp-user-delay-max=N maximum time in microseconds to sleep after each request [0]
--oltp-table-name=STRING name of test table [sbtest]
--oltp-table-size=N number of records in test table [10000]
--oltp-dist-type=STRING random numbers distribution {uniform,gaussian,special} [special]
--oltp-dist-iter=N number of iterations used for numbers generation [12]
--oltp-dist-pct=N percentage of values to be treated as 'special' (for special distribution) [1]
--oltp-dist-res=N percentage of 'special' values to use (for special distribution) [75]
General database options:
--db-driver=STRING specifies database driver to use ('help' to get list of available drivers)
--db-ps-mode=STRING prepared statements usage mode {auto, disable} [auto]
Compiled-in database drivers:
mysql - MySQL driver
pgsql - PostgreSQL driver
mysql options:
--mysql-host=[LIST,...] MySQL server host [localhost]
--mysql-port=N MySQL server port [3306]
--mysql-socket=STRING MySQL socket
--mysql-user=STRING MySQL user [sbtest]
--mysql-password=STRING MySQL password []
--mysql-db=STRING MySQL database name [sbtest]
--mysql-table-engine=STRING storage engine to use for the test table {myisam,innodb,bdb,heap,ndbcluster,federated} [innodb]
--mysql-engine-trx=STRING whether storage engine used is transactional or not {yes,no,auto} [auto]
--mysql-ssl=[on|off] use SSL connections, if available in the client library [off]
--myisam-max-rows=N max-rows parameter for MyISAM tables [1000000]
--mysql-create-options=STRING additional options passed to CREATE TABLE []
pgsql options:
--pgsql-host=STRING PostgreSQL server host [localhost]
--pgsql-port=N PostgreSQL server port [5432]
--pgsql-user=STRING PostgreSQL user [sbtest]
--pgsql-password=STRING PostgreSQL password []
--pgsql-db=STRING PostgreSQL database name [sbtest]
参数详解:
--oltp-test-mode=STRING 执行模式{simple,complex(advanced transactional),nontrx(non-transactional),sp}。默认是complex
--oltp-reconnect-mode=STRING 重新连接模式{session(不使用重新连接。每个线程断开只在测试结束),transaction(在每次事务结束后重新连接),query(在每个SQL语句执行完重新连接),random(对于每个事务随机选择以上重新连接模式)}。默认是session
--oltp-sp-name=STRING 存储过程的名称。默认为空
--oltp-read-only=[on|off] 只读模式。Update,delete,insert语句不可执行。默认是off
--oltp-skip-trx=[on|off] 省略begin/commit语句。默认是off
--oltp-range-size=N 查询范围。默认是100
--oltp-point-selects=N number of point selects [10]
--oltp-simple-ranges=N number of simple ranges [1]
--oltp-sum-ranges=N number of sum ranges [1]
--oltp-order-ranges=N number of ordered ranges [1]
--oltp-distinct-ranges=N number of distinct ranges [1]
--oltp-index-updates=N number of index update [1]
--oltp-non-index-updates=N number of non-index updates [1]
--oltp-nontrx-mode=STRING 查询类型对于非事务执行模式{select, update_key, update_nokey, insert, delete} [select]
--oltp-auto-inc=[on|off] AUTO_INCREMENT是否开启。默认是on
--oltp-connect-delay=N 在多少微秒后连接数据库。默认是10000
--oltp-user-delay-min=N 每个请求最短等待时间。单位是ms。默认是0
--oltp-user-delay-max=N 每个请求最长等待时间。单位是ms。默认是0
--oltp-table-name=STRING 测试时使用到的表名。默认是sbtest
--oltp-table-size=N 测试表的记录数。默认是10000
--oltp-dist-type=STRING 分布的随机数{uniform(均匀分布),Gaussian(高斯分布),special(空间分布)}。默认是special
--oltp-dist-iter=N 产生数的迭代次数。默认是12
--oltp-dist-pct=N 值的百分比被视为'special' (for special distribution)。默认是1
--oltp-dist-res=N ‘special’的百分比值。默认是75
3. 总结:
以上就是sysbench工具的安装配置及相关选项参数的介绍,可以根据自己的需要添加对应的参数进行压力测试即可。在下一篇文档中将会对上面的几种模式进行相应的测试。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29893219/viewspace-1851553/ ,如需转载,请注明出处,否则将追究法律责任。