Sysbench性能测试
传送门:
Sysbench性能测试(一): sysbench简介与安装
Sysbench性能测试(二): sysbench基本使用和CPU性能测试
Sysbench性能测试(三): 内存性能测试
Sysbench性能测试(四): 文件I/O性能测试
Sysbench性能测试(五): 数据库性能测试
3-4 文件I/O性能测试
文件I/O性能测试主要是用于测试I/O的负载性能,测试过程需要进行三个阶段:准备阶段(prepare)、运行阶段(run)、清理阶段(cleanup)。在准备阶段创建测试所需数据,这些数据将在清理阶段被删除,注意在prepare和cleanup两个命令中的参数需要一致。
测试所能获得指标:
- 读/写操作速度
- 读/写吞吐率
- fsyncs同步速度
- 所有events的最小、最大、平均耗时
- 所有线程耗时总和
- 平均每线程完成events数/标准差
- 平均每线程耗时/标准差
I/O性能测试参数
# fileio options([]为默认参数):
--file-num=N # 创建的文件数量 [128]
--file-block-size=N # 在所有IO操作中使用的块大小 [16384]
--file-total-size=SIZE # 要创建的文件的总大小 [2G]
--file-test-mode=STRING # 测试模式 {seqwr(顺序写), seqrewr(顺序重写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)}
--file-io-mode=STRING # 文件操作模式 {sync(同步),async(异步),mmap} [sync]
--file-extra-flags=[LIST,...] # 用于打开文件的附加标志列表 {sync,dsync,direct} []
--file-fsync-freq=N # 执行N条请求数量后执行fsync() (0 - don't use fsync()) [100]
--file-fsync-all[=on|off] # 每条写指令后执行fsync() [off]
--file-fsync-end[=on|off] # 测试执行后执行fsync() [on]
--file-fsync-mode=STRING # 同步方式 {fsync, fdatasync} [fsync]
--file-merged-requests=N # 允许范围内,最多合并IO请求数量 (0 - don't merge) [0]
--file-rw-ratio=N # 组合测试读/写比率 [1.5]
测试实例
# 线程数=4 每隔4s输出一次结果 测试时间=60s
# 文件数=2 文件总大小=4G 文件操作模式=随机读写
# 块大小 16384
sysbench --threads=4 --report-interval=4 --time=60 --test=fileio --file-num=2 --file-total-size=4G --file-test-mode=rndrw prepare
sysbench --threads=4 --report-interval=4 --time=60 --test=fileio --file-num=2 --file-total-size=4G --file-test-mode=rndrw run
sysbench --threads=4 --report-interval=4 --time=60 --test=fileio --file-num=2 --file-total-size=4G --file-test-mode=rndrw cleanup
测试结果
Extra file open flags: (none)
2 files, 2GiB each
4GiB total file size
Block size 16KiB
Number of IO requests: 0
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
Initializing worker threads...
Threads started!
[ 4s ] reads: 155.03 MiB/s writes: 103.35 MiB/s fsyncs: 329.73/s latency (ms,95%): 0.099 # 读速度 写速度 fsyncs()调用次数
[ 8s ] reads: 141.36 MiB/s writes: 94.24 MiB/s fsyncs: 302.25/s latency (ms,95%): 0.095
[ 12s ] reads: 187.62 MiB/s writes: 125.08 MiB/s fsyncs: 400.25/s latency (ms,95%): 0.097
...# 中间输出部分删除
[ 56s ] reads: 139.68 MiB/s writes: 93.11 MiB/s fsyncs: 297.98/s latency (ms,95%): 0.097
[ 60s ] reads: 178.84 MiB/s writes: 119.23 MiB/s fsyncs: 381.53/s latency (ms,95%): 0.099
File operations:
reads/s: 9536.35 # 读操作/s
writes/s: 6357.60 # 写操作/s
fsyncs/s: 318.01 # fsyncs操作/s
Throughput:
read, MiB/s: 149.01 # 读速度
written, MiB/s: 99.34 # 写速度
General statistics:
total time: 60.0075s # 测试时间
total number of events: 972876 # events总数
Latency (ms):
min: 0.00 # 最小耗时 数值太小,输出精度不够
avg: 0.24 # 平均耗时
max: 1569.96 # 最大耗时
95th percentile: 0.10 # 95%events操作耗时
sum: 237799.11 # 所有线程的耗时总和
Threads fairness:
events (avg/stddev): 243219.0000/683.34 # 平均每线程完成events数/标准差
execution time (avg/stddev): 59.4498/0.00 # 平均每线程执行时间/标准差