sysbench是一个基于LuaJIT的可编写脚本的多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂的工作负载。
sysbench 附带以下捆绑基准测试:
- oltp_*.lua:类似 OLTP 的数据库基准测试的集合
- fileio:文件系统级基准测试
- cpu:一个简单的CPU基准测试
- memory:内存访问基准
- threads:基于线程的调度程序基准
- mutex:POSIX 互斥基准
特征
- 提供有关速率和延迟的广泛统计数据,包括延迟百分位数和直方图;
- 即使有数千个并发线程,开销也很低。sysbench 每秒能够生成和跟踪数亿个事件;
- 通过在用户提供的 Lua 脚本中实现预定义的钩子,可以轻松创建新的基准;
- 也可以用作通用 Lua 解释器,只需在脚本中替换#!/usr/bin/lua为即可。#!/usr/bin/sysbench
用法
一般语法
sysbench 的一般命令行语法是:
sysbench [options]... [testname] [command]
testname是内置测试的可选名称(例如fileio、 memory、cpu等),或者捆绑的 Lua 脚本之一的名称(例如oltp_read_only),或者自定义 Lua 脚本的路径。如果在命令行上没有指定测试名称(因此,也没有 命令,因为在这种情况下它将被解析为 testname ),或者测试名称是破折号(“ -”),那么 sysbench 需要一个 Lua在其标准输入上执行的脚本。
command是一个可选参数,将由 sysbench 传递给testname指定的内置测试或脚本。命令 定义测试必须执行的操作。可用命令的列表取决于特定的测试。一些测试还实现自己的自定义命令。
以下是典型测试命令及其用途的描述:
- prepare:为需要的测试执行准备操作,例如在磁盘上创建测试所需的文件fileio ,或填充测试数据库以进行数据库基准测试。
- run:运行由testname参数指定的实际测试 。所有测试都提供此命令。
- cleanup:在创建临时数据的测试中运行测试后删除临时数据。
- help:显示使用testname参数指定的测试的使用信息 。这包括测试提供的命令的完整列表,因此应该使用它来获取可用的命令。
options是零个或多个以 . 开头的命令行选项的列表 '--'。与命令一样,sysbench testname help命令应该用于描述特定测试提供的可用选项。
有关sysbench 本身提供的常规选项的说明,请参阅常规命令行选项。
您可以用来sysbench --help显示一般命令行语法和选项。
选项 | 描述 | 默认值 |
--threads | 要创建的工作线程总数 | 1 |
--events | 请求总数的限制。0(默认)表示无限制 | 0 |
--time | 总执行时间限制(以秒为单位)。0表示无限制 | 10 |
--warmup-time | 在启用统计信息的实际基准运行之前,在禁用统计信息的情况下执行这么多秒的事件。当您想要从统计数据中排除基准测试运行的初始阶段时,这非常有用。在许多基准测试中,初始阶段并不具有代表性,因为CPU/数据库/页面和其他缓存需要一些时间来预热 | 0 |
--rate | 平均交易率。该数字指定所有线程平均每秒应执行多少个事件(事务)。0(默认)表示无限速率,即事件尽可能快地执行 | 0 |
--thread-init-timeout | 工作线程初始化的等待时间(以秒为单位) | 30 |
--thread-stack-size | 每个线程的堆栈大小 | 32K |
--report-interval | 以指定的时间间隔(以秒为单位)定期报告中间统计信息。请注意,此选项生成的统计数据是按时间间隔生成的,而不是累积的。0 禁用中间报告 | 0 |
--debug | 打印更多调试信息 | off |
--validate | 尽可能验证测试结果 | off |
--help | 打印有关一般语法或指定测试的帮助,然后退出 | off |
--verbosity | 详细级别(0 - 仅关键消息,5 - 调试) | 4 |
--percentile | sysbench 测量所有已处理请求的执行时间,以显示最小、平均和最大执行时间等统计信息。对于大多数基准测试,了解与某个百分位数匹配的请求执行时间值也很有用(例如,95% 百分位数意味着我们应该删除 5% 的最长请求并从剩余请求中选择最大值)。此选项允许指定要计数的查询执行时间的百分位等级 | 95 |
--luajit-cmd | 执行 LuaJIT 控制命令。该选项相当于luajit -j. 请参阅LuaJIT 文档以获取更多信息 |
请注意,所有大小选项的数值(如--thread-stack-size本表中所示)可以通过附加相应的乘法后缀来指定(K 表示千字节,M 表示兆字节,G 表示千兆字节,T 表示太字节)。
随机数选项
sysbench 提供了多种算法来生成根据给定概率分布分布的随机数。下表列出了可用于控制这些算法的选项。
随机数选项
sysbench 提供了多种算法来生成根据给定概率分布分布的随机数。下表列出了可用于控制这些算法的选项。
选项 | 描述 | 默认值 |
--rand-type | 默认使用的随机数分布 {uniform、gaussian、special、pareto、zipfian}。基准脚本可以选择使用默认发行版,也可以明确指定它,即覆盖默认发行版。 | special |
--rand-seed | 随机数生成器的种子。当为 0 时,当前时间用作 RNG 种子。 | 0 |
--rand-spec-iter | 特殊分布的迭代次数 | 12 |
--rand-spec-pct | “特殊”值落在特殊分布中的整个范围的百分比 | 1 |
--rand-spec-res | 用于特殊分布的“特殊”值的百分比 | 75 |
--rand-pareto-h | 帕累托分布的形状参数 | 0.2 |
--rand-zipfian-exp | Zipfian 分布的形状参数 (theta) | 0.8 |
以上文章来自于github:GitHub - akopytov/sysbench: Scriptable database and system performance benchmark
FusionOS源码编译安装: