暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用sysbench对磁盘进行io性能测试

5381

作为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 在看” 你最好看!

喜欢,就关注我吧!


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

文章转载自PostgreSQL运维技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论