[转帖]Sysbench - 一种系统性能benchmark
SysBench是一款开源的、跨平台的、模块化的、多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。用于评估操作系统的性能参数。
1 sysbench简介
Sysbench使得我们无需采用真正的复杂的数据库benchmark而获取系统的性能概况。
目前主要支持的数据库有mysql、oracle、postgresql。
可评估的系统性能参数有:
1. Cpu性能
2. 内存分配与传输速度测试
3. 互斥体测试
4. 文件I/O性能
5. 线程调度性能
6. 数据库服务性能(OLTP基准)
本来sysbench主要是为mysql编写的benchmark。但是现在SysBench将进一步扩展,以支持更多的数据库backends,distributed benchmarks和第三方插件模块。
sysbench按照指定的数量开启线程,每个线程与mysql建立一个连接,每个线程不停地进行事务操作,打开事务,然后进行一些查询、更新、插入操作,提交事务,再开始新的事务;所有的sql只访问一个表-sbtest,是由sysbench的prepare命令建好的。其中的记录数,也是在prepare时指定好并创建的。测试结束,会有一个统计结果,包括例如每秒事务数、平均响应时间等等;
2 sysbench下载与安装
1.下载
下载地址:Phoronix Test Suite download | SourceForge.net
获得sysbench-0.4.8.tar.gz源码。sysbench-0.4.8.tar.gz编译未通过。
2.安装
默认支持MySQL,如果需要测试Oracle/PostgreSQL,则在configure时需要加上–with-oracle或者–with-pgsql参数
-
[root@RedHat sysbench-0.4.8]# ./configure --without-mysql
-
[root@RedHat sysbench-0.4.8]# make
-
[root@RedHat sysbench-0.4.8]# make install
如果需要测试mysql,则需要配置参数选项:
./configure
--with-mysql-includes=/opt/mysql/include/mysql 表示mysql头文件目录
--with-mysql-libs=/opt/mysql/lib/mysql表示mysql模块目录
如果缺少libtool请至ftp://ftp.gnu.org/gnu/libtool/下载
3 sysbench帮助说明
请查看sysbench帮助
-
[root@RedHat sysbench-0.4.8]# sysbench
-
Missing required command argument.
-
Usage:
-
sysbench [general-options]... --test=<test-name> [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]
-
--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
-
-
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
-
-
See 'sysbench --test=<name> help' for a list of options for each test.
-
-
[root@RedHat sysbench-0.4.8]#
其中通用参数
|
参数名 |
参数描述 |
|
--num-threads=N |
测试时使用的线程数,默认为1 |
|
--max-requests=N |
请求数最大现在,默认10000 |
|
-max-time=N |
执行时间最大限制,默认为0 |
|
--thread-stack-size=SIZE |
每个线程的stack大小,默认是32K |
|
--init-rng=[on|off] |
是否初始化随机数生成器 |
|
--test=STRING |
运行的测试 |
|
--debug=[on|off] |
是否打印更多的debug信息 |
|
--validate=[on|off] |
是否执行有效性检查 |
|
--help=[on|off] |
打印帮助并退出 |
其中--test=STRING中的STRING可选项有:
|
STRING |
描述 |
|
fileio |
文件IO测试 |
|
cpu |
CPU性能测试 |
|
memory |
内存分配与传输速度测试 |
|
threads |
线程子系统性能测试 |
|
mutex |
互斥体性能测试 |
|
oltp |
数据库OLTP测试 |
4 文件IO测试
4.1 参数说明
-
[root@RedHat test]# sysbench --test=fileio help
-
sysbench v0.4.8: 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-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 poss ible (0- don't merge) [0]
-
--file-rw-ratio=N reads/writes ratio for combined test [1.5]
-
-
[root@RedHat test]#
参数选项说明:
|
参数名 |
描述 |
|
--file-num=N |
创建的文件数目,默认为128个 |
|
--file-block-size=N |
所有IO操作中的block大小,默认是16384 |
|
--file-total-size=SIZE |
创建的文件的总大小,默认为2G |
|
--file-test-mode=STRING |
测试的访问模式,可选一下6个参数:seqwr(顺序写)/seqrewr(顺序读写)/seqrd(顺序读)/ rndwr(随机写)/rndrw(随机读写)/rndrd(随机读); |
|
--file-io-mode=STRING |
文件操作模式,有以下四种选择:sync,async,fastmmap,slowmmap默认为sync |
|
--file-extra-flags=STRING |
打开文件是的标识,有以下选择:sync,dsync,direct |
|
--file-fsync-freq=N |
在N个请求之后执行fsync(),默认值为100,0表示不执行fsync() |
|
--file-fsync-all=[on|off] |
是否每一次写操作之后均执行fsync() |
|
--file-fsync-end=[on|off] |
在测试结束时执行fsync(),默认开启 |
|
--file-fsync-mode=STRING |
同步使用什么方法:fsync, fdatasync,默认为fsync |
|
--file-merged-requests=N |
尽可能的合并N个请求,0表示不合并,默认为0 |
|
--file-rw-ratio=N |
读写比例默认为1.5:1 |
4.2 测试案例
创建2个进程,创建的文件总大小为3G,文件读写模式为随机读。
可以获取读写速度~
-
[root@RedHat test]# sysbench --test=fileio --num-threads=2 --file-total-size=512M --file-test-mode=rndrw prepare (准备测试文件)
-
sysbench v0.4.8: multi-threaded system evaluation benchmark
-
-
128 files, 4096Kb each, 512Mb total
-
Creating files for the test...
-
-
[root@RedHat test]# sysbench --test=fileio --num-threads=2 --file-total-size=512M --file-test-mode=rndrw run (运行测试)
-
sysbench v0.4.8: multi-threaded system evaluation benchmark
-
-
Running the test with following options:
-
Number of threads: 2
-
-
Extra file open flags: 0
-
128 files, 4Mb each
-
512Mb total file size
-
Block size 16Kb
-
Number of random requests for random IO: 10000
-
Read/Write ratio for combined random IO test: 1.50
-
Periodic FSYNC enabled, calling fsync() each 100 requests.
-
Calling fsync() at the end of test, Enabled.
-
Using synchronous I/O mode
-
Doing random r/w test
-
Threads started!
-
Done.
-
-
Operations performed: 6000 Read, 4000 Write, 12800 Other = 22800 Total
-
Read 93.75Mb Written 62.5Mb Total transferred 156.25Mb (3.2979Mb/sec)
-
211.07 Requests/sec executed
-
-
Test execution summary:
-
total time: 47.3783s
-
total number of events: 10000
-
total time taken by event execution: 36.6912
-
per-request statistics:
-
min: 0.0000s
-
avg: 0.0037s
-
max: 0.2687s
-
approx. 95 percentile: 0.0230s
-
-
Threads fairness:
-
events (avg/stddev): 5000.0000/180.00
-
execution time (avg/stddev): 18.3456/0.19
-
-
[root@RedHat test]# sysbench --test=fileio --num-threads=2 --file-total-size=512M --file-test-mode=rndrw cleanup (清除测试文件)
-
sysbench v0.4.8: multi-threaded system evaluation benchmark
-
-
Removing test files...
-
[root@RedHat test]#
5 CPU性能测试
Sysbench采用寻找最大素数的方式测试CPU性能:
-
[root@RedHat ~]# sysbench --test=cpu help
-
sysbench v0.4.8: multi-threaded system evaluation benchmark
-
-
cpu options:
-
--cpu-max-prime=N upper limit for primes generator [10000]
-
-
[root@RedHat ~]#
5.1 参数解析
|
参数名 |
描述 |
|
--cpu-max-prime=N |
素数的最大限制,默认为10000; |
5.2 测试案例
-
[root@RedHat ~]# sysbench --test=cpu --cpu-max-prime=20000 run
-
sysbench v0.4.8: multi-threaded system evaluation benchmark
-
Running the test with following options:
-
Number of threads: 1
-
Doing CPU performance benchmark
-
Threads started!
-
Done.
-
Maximum prime number checked in CPU test: 20000
-
Test execution summary:
-
total time: 124.1761s
-
total number of events: 10000
-
total time taken by event execution: 123.3658
-
per-request statistics:
-
min: 0.0051s
-
avg: 0.0123s
-
max: 0.1908s
-
approx. 95 percentile: 0.0171s
-
-
Threads fairness:
-
events (avg/stddev): 10000.0000/0.00
-
execution time (avg/stddev): 123.3658/0.00
-
[root@RedHat ~]#
6. 内存性能测试
6.1 测试参数
-
[root@RedHat ~]# sysbench --test=memory help
-
sysbench v0.4.8: 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]
-
-
[root@RedHat ~]#
参数说明:
|
参数名 |
描述 |
|
--memory-block-size=SIZE |
内存块大小,默认为1K |
|
--memory-total-size=SIZE |
传输的数据量,默认为100G |
|
--memory-scope=STRING |
内存访问是局部local还是全局global,默认为global |
|
--memory-hugetlb=[on|off] |
从hugetlb中分配内存 |
|
--memory-oper=STRING |
内存操作类型read, write, none,默认为写 |
|
--memory-access-mode=STRING |
内存访问模式seq,rnd,默认为seq; |
6.2 测试案例
[root@RedHat test]# sysbench --test=memory --memory-block-size=4k --memory-total-size=64M run
7.线程性能测试
7.1 测试参数
-
[root@RedHat ~]# sysbench --test=threads help
-
sysbench v0.4.8: 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]
-
-
[root@RedHat ~]#
参数说明:
|
参数名 |
描述 |
|
--thread-yields=N |
内存块大小,默认为1K |
|
--thread-locks=N |
传输的数据量,默认为100G |
7.2 测试案例
-
[root@RedHat test]# sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
-
sysbench v0.4.8: multi-threaded system evaluation benchmark
-
-
Running the test with following options:
-
Number of threads: 64
-
-
Doing thread subsystem performance test
-
Thread yields per test: 100 Locks used: 2
-
Threads started!
-
Done.
-
-
Test execution summary:
-
total time: 24.8159s
-
total number of events: 10000
-
total time taken by event execution: 1575.5529
-
per-request statistics:
-
min: 0.0002s
-
avg: 0.1576s
-
max: 2.0173s
-
approx. 95 percentile: 0.5627s
-
-
Threads fairness:
-
events (avg/stddev): 156.2500/12.62
-
execution time (avg/stddev): 24.6180/0.08
-
-
[root@RedHat test]#
8 互斥体性能测试
8.1 测试参数
-
[root@RedHat ~]# sysbench --test=mutex help
-
sysbench v0.4.8: 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]
-
-
[root@RedHat ~]#
参数解析:
|
参数名 |
描述 |
|
--mutex-num=N |
互斥体数据大小,默认为4096 |
|
--mutex-locks=N |
每个线程上互斥锁的数目,默认为50000; |
|
--mutex-loops=N |
互斥锁内空循环的数目,默认为10000 |
8.2 测试案例
-
[root@RedHat test]# sysbench --test=mutex --num-threads=16 --mutex-num=1024 --mutex-locks=10000 --mutex-loops=5000 run
-
sysbench v0.4.8: multi-threaded system evaluation benchmark
-
-
Running the test with following options:
-
Number of threads: 16
-
-
Doing mutex performance test
-
Threads started!
-
Done.
-
-
Test execution summary:
-
total time: 0.0482s
-
total number of events: 16
-
total time taken by event execution: 0.2271
-
per-request statistics:
-
min: 0.0015s
-
avg: 0.0142s
-
max: 0.0312s
-
approx. 95 percentile: 0.0126s
-
-
Threads fairness:
-
events (avg/stddev): 1.0000/0.00
-
execution time (avg/stddev): 0.0142/0.01
-
[root@RedHat test]#
9 OLTP测试
不做分析了
10. 参考资料:
Phoronix Test Suite download | SourceForge.net
http://www.ningoo.net/html/2009/performance_test_tool_sysbench.html
[转帖]Sysbench - 一种系统性能benchmark的更多相关文章
- Sysbench - 一种系统性能benchmark
SysBench是一款开源的.跨平台的.模块化的.多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.用于评估操作系统的性能参数. 1 ...
- [转帖]TPC-C解析系列01_TPC-C benchmark测试介绍
TPC-C解析系列01_TPC-C benchmark测试介绍 http://www.itpub.net/2019/10/08/3334/ 学习一下. 自从蚂蚁金服自研数据库OceanBase获得TP ...
- [转帖]Docker五种存储驱动原理及应用场景和性能测试对比
Docker五种存储驱动原理及应用场景和性能测试对比 来源:http://dockone.io/article/1513 作者: 陈爱珍 布道师@七牛云 Docker最开始采用AUFS作为文件系统 ...
- 【转帖】四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho
四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho 1 BI系统的简述 从技术角度来说 BI 包含了 ETL.DW.OLAP.DM等多环节.简单的说就是把交易系统 ...
- [转帖]Docker四种网络模式
Docker(十四)-Docker四种网络模式 https://www.cnblogs.com/zhuochong/p/10069293.html 计算机网络相关的知识 非常有用.. Docker 安 ...
- 【转帖】两种IO模式:Proactor与Reactor模式
两种IO模式:Proactor与Reactor模式 https://www.cnblogs.com/pigerhan/p/3474217.html. 挺好的说明了epoll和IOCP的区别 在高性能的 ...
- sysbench的安装与使用(with MySQL)
sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试. 项目主页: http://sysbench.sourceforge.net/ 安装文档htt ...
- NtQuerySystemInformation的使用(提供50余种信息)
今天,我们主要讨论的是一个函数NtQuerySystemInformation(ZwQuerySystemInformation).当然,你不要小看这么一个函数,它却为我们提供了丰富的系统信息,同时还 ...
- mysql sysbench基准测试
git项目地址: https://github.com/akopytov/sysbench 利用sysbench很容易对mysql做性能基准测试(当然这个工具很强大,除了测试主流数据库性能,还能测试其 ...
- 利用sysbench进行MySQL OLTP基准测试
Preface In order to know clearly about the real performance threshold of database server,we ...
随机推荐
- spring-cloud-alibaba项目打包
在父依赖中加入 <build> <plugins> <plugin> <groupId>org.springframework.boot</gro ...
- row_number函数的不稳定性
本文分享自华为云社区<row_number函数的不稳定性>,作者: nullptr_ . row_number为窗口函数,用来为各组内数据生成连续排号 基础用法 postgres=# se ...
- 云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: GaussDB( ...
- 带你读AI论文:SDMG-R结构化提取—无限版式小票场景应用
摘要:在文档图像中提取关键信息在自动化办公应用中至关重要.传统基于模板匹配或者规则的方法,在通用性方面.未见过版式模板数据方面,效果都不好:为此,本文提出了一种端到端的空间多模态图推理模型(SDMG- ...
- AOC萌新探索:搭建和体验在线AOC环境
摘要:AOC是一个做网络设备自动化运维以及三方设备纳管的一个能力平台. 本文分享自华为云社区<AOC萌新探索之旅第一期--在线AOC环境初体验>,作者:oysterzz. 接触AOC没多久 ...
- 华为云GaussDB(for Influx)揭密第六期:数据分级存储
摘要:GaussDB(for Influx)通过冷热数据存储分离,在提供海量数据高性能存储的同时可节省85%的存储成本,高效满足时序应用各种场景. 本文分享自华为云社区<华为云GaussDB(f ...
- 聊聊损失函数1. 噪声鲁棒损失函数简析 & 代码实现
今天来聊聊非常规的损失函数.在常用的分类交叉熵,以及回归均方误差之外,针对训练样本可能存在的数据长尾,标签噪声,数据不均衡等问题,我们来聊聊适用不同场景有针对性的损失函数.第一章我们介绍,当标注标签存 ...
- L2-024 部落 (25 point(s)) (并查集)
补题链接:Here 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查 ...
- 版本升级 | v1.0.12发布,许可证风险早知道
新版本来啦~~~~ 一.v1.0.12更新内容 优化许可证检出功能,可通过JSON / HTML / SPDX 报告获知许可证信息 支持HTML报告自定义分页 二.更新说明 1. 优化许可证检出功能, ...
- 9、SpringBoot-mybatis-druid多源数据多源数据
系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...