作为DBA,关注数据库系统的性能是我们日常工作之一,io性能问题又是其中最重要的一块。
sysbench是一个综合性能测试工具,通常都用它来做数据库的性能压测,但也可以用来做io性能测试。衡量磁盘io性能,一般主要看以下几个指标。
IOPS:每秒读/写次数,单位为次(计数)。
吞吐量:每秒的读写数据量,单位为MB/s。
时延:I/O 操作的发送时间到接收确认所经过的时间。
使用sysbench 进行io性能测试
命令:sysbench fileio,参数解释如下,可以通过sysbench fileio help查看帮助文档。
--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]
sysbench的性能测试都需要做prepare,run,cleanup这三步,准备数据,跑测试,删除数据。在准备阶段创建测试所需数据,在清理阶段删除这些数据。
开始测试
#cd要到你测试的磁盘目录下
cd /data/disktest
# 线程数=32 每隔4s输出一次结果 测试时间=60s
# 文件数=10 文件总大小=10G 文件操作模式=随机读写
sysbench --threads=32 --report-interval=4 --time=60 --test=fileio --file-num=10 --file-total-size=10G --file-test-mode=rndrw prepare
sysbench --threads=32 --report-interval=4 --time=60 --test=fileio --file-num=10 --file-total-size=10G --file-test-mode=rndrw run
sysbench --threads=32 --report-interval=4 --time=60 --test=fileio --file-num=10 --file-total-size=10G --file-test-mode=rndrw cleanup
run阶段输出结果示例:
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 # 平均每线程执行时间/标准差
测试所能获得指标:
读/写操作速度
读/写吞吐率
fsyncs同步速度
所有events的最小、最大、平均耗时
所有线程耗时总和
平均每线程完成events数/标准差
平均每线程耗时/标准差
考察这些指标时,我们要注意综合业务I/O的具体场景来分析,比如读写类型(顺序还是随机)、读写比例、读写大小、存储类型等等。
比如,如果要测试顺序读写场景,我们就设置--file-test-mode==seqrewr。如果数据库读多写少,我们可以调大--file-rw-ratio的值(默认读/写比率是1.5)。
总结
我们可以使用sysbench fileio命令对磁盘进行io性能测试,通过调整参数来测试不同场景下io性能指标。在run阶段的输出结果中,我们可以获得读/写操作速率、读/写吞吐率、时延等指标。
参考:https://blog.csdn.net/squirrel100/article/details/120290052

点个“赞 or 在看” 你最好看!

👇👇👇谢谢各位老板!!!




