这是命令 sysbench,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
sysbench - 模块化、跨平台和多线程的基准测试工具。
概要
系统工作台 [常用选项] --test=名称 [测试选项] 命令
系统工作台 [{-h | - 帮帮我} | {-v | - 版}]
商品描述
SysBench 是一种模块化、跨平台和多线程的基准测试工具,用于评估操作系统
对在密集负载下运行数据库的系统很重要的参数。
这个基准套件的想法是快速了解系统性能
无需设置复杂的数据库基准测试,甚至无需在
所有。
当前功能允许测试以下系统参数:
· 文件I/O性能
· 调度器性能
· 内存分配和传输速度
· POSIX线程实现性能
· 数据库服务器性能
设计非常简单。 SysBench 运行指定数量的线程,它们都
并行执行请求。 请求产生的实际工作量取决于
指定的测试模式。 您可以限制请求总数或总时间
为基准,或两者兼而有之。
可用的测试模式由编译模块实现,SysBench 旨在
使添加新的测试模式成为一项简单的任务。 每个测试模式可能有额外的(或
特定于工作负载)选项。
配置
--线程数
要创建的工作线程总数(默认值:1)
--最大请求数
请求总数的限制。 0 表示无限制(默认值:10000)
--最大时间
以秒为单位的总执行时间限制。 0(默认:0)
--线程堆栈大小
每个线程的堆栈大小(默认值:32K)
--init-rnd
指定是否应在测试前从计时器初始化随机数生成器
开始(默认:关闭)
- 测试
要运行的测试模式的名称 其他要求
-调试
打印更多调试信息(默认:关闭)
- 证实
尽可能对测试结果进行验证(默认:关闭)
- 帮帮我
打印关于一般语法或使用 --test 指定的测试模式的帮助,然后退出
- 版
显示程序版本。
--百分位
SysBench 测量所有已处理请求的执行时间以显示统计信息
诸如最小、平均和最大执行时间之类的信息。 对于大多数基准测试它
了解匹配某个百分位的请求执行时间值也很有用(例如
95% 的百分位意味着我们应该丢弃 5% 最长的请求并选择
剩余的最大值)。
此选项允许指定要计算的查询执行时间的百分位排名
(默认:95)
--批处理
定期转储当前结果(默认:关闭 - 另请参阅“批处理”部分
模式”)
--批量延迟
以秒为单位的批处理转储之间的延迟(默认值:300 - 另请参阅名为“批处理”的部分
模式”)
请注意,所有的数值 尺寸 选项(例如 --线程堆栈大小 在这个表中)
可以通过附加相应的乘法后缀来指定(K 代表千字节,M
兆字节,G 代表千兆字节,T 代表太字节)。
批量 模式
在某些情况下,不仅有最终的基准统计数据很有用,而且有
定期转储当前统计数据,以查看它们在测试运行中的变化情况。 为了这
目的 SysBench 具有批处理执行模式,该模式由 --批处理 选项。 你
可以指定随后的转储之间的延迟(以秒为单位) --批量延迟
选项。
计费示例:
sysbench --batch --batch-delay=5 --test=线程运行
这将在线程测试模式下运行 SysBench,当前值为最小值,
每 5 秒打印一次请求执行时间的平均值、最大值和百分位数。
测试 模式
本节详细介绍了 SysBench 中可用的每种测试模式。
CPU
这个 CPU 是 SysBench 中最简单的基准测试之一。 在这种模式下每个请求
包括计算质数直到由指定的值
--cpu 最大素数 选项。 所有计算均使用 64 位整数执行。
每个线程并发执行请求,直到总数达到
请求或总执行时间超过了公共规定的限制
命令行选项。
计费示例:
sysbench --test=cpu --cpu-max-prime=20000 运行
线程
此测试模式是为了基准调度程序性能而编写的,更具体地说是
调度程序有大量线程竞争某些集合的情况
互斥体。
SysBench 创建指定数量的线程和指定数量的互斥锁。 然后
每个线程开始运行由锁定互斥锁组成的请求,产生
CPU,所以线程被调度器放入运行队列,然后解锁
当线程被重新调度回执行时互斥。 对于每个请求,上述
动作在一个循环中运行多次,所以执行的迭代次数越多,就越多
并发被放置在每个互斥锁上。
此测试模式下提供以下选项:
--线程产量
数 锁定/让出/解锁 每个请求执行的循环(默认值:1000)
--线程锁
要创建的互斥锁数(默认值:8)
计费示例:
sysbench --num-threads=64 --test=threads --thread-yields=100 --thread-locks=2 运行
互斥体
编写此测试模式是为了模拟所有线程同时运行的情况
大多数情况下,只在短时间内获取互斥锁
(增加一个全局变量)。 因此,此基准测试的目的是检查
互斥体实现的性能。
此测试模式下提供以下选项:
--互斥量
互斥体的数量。 在每次锁定之前随机选择要锁定的实际互斥锁
(默认:4096)
--内存范围
可能的值: 全球化, 本地. 指定每个线程是否将使用全局
分配的内存块,或本地的。 (默认:全局)
--内存总大小
要传输的数据总大小(默认值:100G)
--内存操作
内存操作的类型。 可能的值: 读, 写
档案
此测试模式可用于生成各种文件 I/O 工作负载。 在
准备 stage SysBench 创建具有指定总数的指定数量的文件
大小,然后在 运行 阶段,每个线程在这个集合上执行指定的 I/O 操作
文件。
当全球 - 证实 选项与 档案 测试模式,SysBench 执行
对从磁盘读取的所有数据进行校验和验证。 在每个写操作块
填充随机值,然后计算校验和并存储在块中
以及该块在文件中的偏移量。 在每次读取操作中,块是
通过比较存储的偏移量与实际偏移量以及存储的校验和来验证
与实际计算的校验和。
支持以下 I/O 操作:
序列号
顺序写
序列器
顺序重写
顺序
顺序读取
第一个
随机读取
回复
随机写入
下载
组合随机读/写
此外,可以指定以下文件访问模式,如果底层平台
支持他们:
异步 I/O 模式
目前仅支持 Linux AIO 实现。 跑进去的时候
异步模式,SysBench 使用 Linux 对指定数量的 I/O 请求进行排队
AIO API,然后等待至少一个提交的请求完成。 在那之后
提交了一系列新的 I/O 请求。
放慢 映射() 模式
在这种模式下,SysBench 将使用 MMAP'ed I/O。 然而,一个单独的 MMAP 将会被使用
由于 32 位架构的限制(我们不能
映射() 整个文件,因为它的大小可能超过 2 GB 的最大值
进程地址空间)。
快速 映射() 模式
在 64 位架构上,可以 映射() 整个文件进入进程
地址空间,避免了 2 位平台上 32 GB 的限制。
运用 数据同步() 而不是 同步()
仅刷新数据缓冲区,而不刷新元数据。
附加标志 open(2)
SysBench 可以使用额外的标志来 open(2),如 O_SYNC, O_DSYNC 和
O_DIRECT.
以下是测试特定选项的列表 档案 模式:
--文件编号
要创建的文件数(默认值:128)
--文件块大小
用于所有 I/O 操作的块大小(默认值:16K)
--文件总大小
文件总大小(默认:2G)
--文件测试模式
要产生的工作负载类型。 可能的值: 序列号, 序列器, 顺序, 第一个, 回复,
回复 (往上看) 必须
--file-io-模式
输入输出模式。 可能的值: 同步, 异步, 快速映射, 慢速映射 (仅当支持
平台,见上文)。 (默认:同步)
--文件异步积压
每个线程排队的异步操作数(仅适用于
--file-io-mode=异步,见上文)(默认值:128)
--文件额外标志
要使用的其他标志 open(2)
--file-fsync-频率
Do 同步() 在此数量的请求之后(默认值:0 - 不使用 同步())
--文件-fsync-全部
Do 同步() 每次写操作后i(默认值:否)
--文件-fsync-结束
Do 同步() 在测试结束时(默认:是)
--file-fsync-模式
使用哪种方法进行同步。 可能的值: FSYNC, 数据同步
(默认:fsync)
--文件合并请求
如果可能,最多合并此数量的 I/O 请求(默认值:0 - 不合并)
--文件-rw-比率
组合随机读/写测试的读/写比率(默认值:1.5)
用法示例:
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw 准备
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw 运行
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw 清理
在上面的例子中,第一个命令创建了 128 个文件,总大小为 3 GB
在当前目录中,第二个命令运行实际的基准测试并显示
完成后的结果,第三个删除用于测试的文件。
OLTP
编写此测试模式是为了对真实的数据库性能进行基准测试。 在 准备
stage 在指定的数据库中创建下表(测试 默认):
创建表`sbtest`(
`id` INT(10) 无符号 NOT NULL auto_increment,
`k` INT(10) unsigned NOT NULL 默认'0',
`c` 坦克(120) NOT NULL 默认值 '',
`垫` 坦克(60) NOT NULL 默认值 '',
主键(`id`),
KEY`k`(`k`);
然后用指定数量的行填充该表。
以下执行模式可在 运行 阶段:
简易
在这种模式下,每个线程运行以下形式的简单查询:
从 sbtest 中选择 c,其中 id=N
协调 N 取范围 1 中的随机值..<表 尺寸>
高级事务
每个线程在测试表上执行事务。 如果测试表和
数据库支持事务(例如 MySQL 中的 InnoDB 引擎),然后 BEGIN/犯罪
语句将用于启动/停止事务。 否则,SysBench 将使用
LOCK TABLES/选购 TABLES 语句(例如用于 MySQL 中的 MyISAM 引擎)。 如果一些
行在事务中被删除,相同的行将插入到相同的事务中
事务,所以这种测试模式不会破坏测试表中的任何数据,
可以在同一张桌子上多次运行。
根据命令行选项,每个事务可能包含以下内容
声明:
· 积分查询:
从 sbtest 中选择 c,其中 id=N
·范围查询:
选择 c 从 sbtest WHERE id BETWEEN N AND M
· 范围 SUM() 查询:
从 sbtest WHERE id BETWEEN 中选择 SUM(K) N 和 M
· 范围 ORDER BY 查询:
SELECT c FROM sbtest WHERE id 之间 N 和 M 按 c 订购
· 范围 DISTINCT 查询:
从 sbtest WHERE id BETWEEN 中选择 DISTINCT c N 和 M 按 c 订购
· 索引列的更新:
更新 sbtest SET k=k+1 WHERE id=N
· 非索引列的更新:
更新 sbtest SET c=N 哪里 id=M
·删除查询:
从 sbtest 中删除 id=N
· INSERT 查询:
插入 sbtest 值 (...)
非交易性
这种模式类似于 简易,但您也可以选择要运行的查询。 笔记
不像 先进的 交易 模式,这个不保存测试
请求之间的表,因此您应该使用适当的重新创建它
净化/准备 连续基准之间的命令。
以下是可能的查询列表:
· 积分查询:
从 sbtest WHERE id= 中选择焊盘N
· 索引列的更新:
更新 sbtest SET k=k+1 WHERE id=N
· 非索引列的更新:
更新 sbtest SET c=N 哪里 id=M
·删除查询:
从 sbtest 中删除 id=N
生成的行 ID 在每次测试运行中都是唯一的,因此不会删除任何行
两次。
· INSERT 查询:
插入 sbtest (k, c, pad) 值(N, M, S)
--oltp-测试模式
执行模式(见上文)。 可能的值: 简单 (简单的), 复杂 (先进的
交易)和 非传输 (非事务性)(默认:复杂)
--oltp-只读
只读模式。 不 更新, 删除 or 插入 将执行查询。 (默认:
关闭)
--oltp-范围大小
范围查询的范围大小(默认值:100)
--oltp-点选择
单个事务中的点选择查询数(默认值:10)
--oltp-简单范围
单个事务中的简单范围查询数(默认值:1)
--oltp-sum-范围
单个事务中的 SUM 范围查询数(默认值:1)
--oltp-订单范围
单个事务中的 ORDER 范围查询数(默认值:1)
--oltp-不同范围
单个事务中 DISTINCT 范围查询的数量(默认值:1)
--oltp-index-更新
单个事务中索引 UPDATE 查询的数量(默认值:1)
--oltp-非索引更新
单个事务中非索引 UPDATE 查询的数量(默认值:1)
--oltp-nontrx-模式
非事务执行模式的查询类型(见上文)。 可能的值:
选择, 更新密钥, update_nokey, 插, 删除. (默认:选择)
--oltp-连接延迟
每次连接到数据库后休眠的时间(以微秒为单位)(默认值:10000)
--oltp-用户延迟分钟
每次请求后休眠的最短时间(以微秒为单位)(默认值:0)
--oltp-用户延迟最大
每次请求后休眠的最长时间(以微秒为单位)(默认值:0)
--oltp-表名
测试表的名称(默认:sbtest)
--oltp 表大小
测试表中的行数(默认值:10000)
--oltp-dist 类型
随机数的分布。 可能的值: 制服 (均匀分布),
高斯 (高斯分布)和 特别. (默认:特殊)
通过特殊分布,指定百分比的数字会在
指定的案例百分比(请参阅下面的选项)。
--oltp-dist-pct
被视为“特殊”的值的百分比(用于特殊分布)
(默认:1)
--oltp-dist-res
生成“特殊”值的情况百分比(用于特殊分布)
(默认:75)
--db-ps-模式
如果数据库驱动程序支持 Prepared Statements API,SysBench 将使用
尽可能为所有查询准备服务器端语句。 除此以外,
将使用客户端(或模拟)准备好的语句。 此选项允许
即使 PS API 可用,也强制使用仿真。 可能的值: 关闭,
汽车. (默认:自动)
此外,每个数据库驱动程序都可以提供自己的选项。 目前只有 MySQL 驱动程序是
可用的。 以下是 MySQL 特定选项的列表:
--mysql-主机
MySQL 服务器主机。 (默认:本地主机)
从版本 0.4.5 开始,您可以指定以逗号分隔的主机列表。
在这种情况下,SysBench 将在指定的 MySQL 主机之间分配连接
一个循环的基础。 注意所有连接端口和密码必须相同
在所有主机上。 此外,必须在每个主机上明确准备数据库和表
在执行基准测试之前。
--mysql-端口
MySQL 服务器端口(如果应该使用 TCP/IP 连接)(默认值:3306)
--mysql-socket
用于与 MySQL 服务器通信的 Unix 套接字文件
--mysql-用户
MySQL 用户(默认:用户)
--mysql-密码
MySQL密码
--mysql-数据库
MySQL 数据库名称。 注意 SysBench 不会自动创建此数据库。
您应该手动创建它并将适当的权限授予用户
将用于访问测试表。 (默认:sbtest)
--mysql-表引擎
测试表的类型。 可能的值: 米萨姆, InnoDB的, 堆, 集群, BDB,
玛丽亚, 鹘, PBXT (默认:innodb)
--mysql-ssl
使用 SSL 连接。 (默认:否)
--myisam-最大行数
MyISAM 表的 MAX_ROWS 选项(大表需要)(默认值:1000000)
--mysql-创建选项
传递给 CREATE TABLE 的附加选项。
用法示例:
$ sysbench --test=oltp --mysql-table-type=myisam --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock 准备
$ sysbench --num-threads=16 --max-requests=100000 --test=oltp --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock --oltp-read-only 运行
第一个命令将在数据库“sbtest”中创建一个 MyISAM 表“sbtest”
MySQL服务器使用 /tmp/mysql.sock socket,然后用 1M 记录填充这个表。 这
第二个命令将使用 16 个客户端线程运行实际基准测试,限制
请求总数为 100,000。
使用 onworks.net 服务在线使用 sysbench
