使用sysbench测试磁盘IO

标签(空格分隔): 性能优化


sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。

它主要包括以下几种方式的测试:

  • cpu性能
  • 磁盘io性能
  • 调度程序性能
  • 内存分配及传输速度
  • POSIX线程性能
  • 数据库性能(OLTP基准测试)

    1. 安装
      下载源码包sysbench-0.4.12.7.tar.gz
      解压:tar zxf sysbench-0.4.12.7.tar.gz
      cd sysbench-0.4.12.7
      安装libtool
      yum install gcc libtool
      ./configure
      make
    2. 参数介绍
      –file-num 生成测试文件的数量,默认是128
      –file-block-size 测试期间文件块的大小
      –file-total-size 每个文件的大小,默认是2GB
      –file-test-mode 文件测试模式,包含seqwr(顺序写)、seqrewr(顺序读写)、seqrd(顺序读)、rndr d(随即读)、rndwr(随机写)、rndrw(随机读写)
      –file-io-mode 文件操作模式,同步还是异步,默认是同步
      –file-fsync-all 每执行完一次写操作,就执行一次fsync,默认是off
      sysbench的fileio测试需要经过prepare、run、clean三个阶段,prepare是准备阶段,生成我们需要的测试文件,run是实际测试阶段,cleanup是清理测试产生的文件

    –prepare

    sysbench --test=fileio --file-num=16 --file-block-size=16384 --file-total-size=2G prepare
    

    –clearup

     sysbench --test=fileio --num-threads=16 --file-total-size=2G --file-test-mode=rndrw cleanup
    
    1. 测试
  • 生成测试文件

         sysbench --test=fileio --file-num=16 --file-block-size=16384 --file-total-size=2G prepare
    
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.0
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.1
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.10
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.11
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.12
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.13
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.14
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.15
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.2
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.3
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.4
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.5
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.6
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.7
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.8
        -rw------- 1 root root  134217728 Dec 18 18:47 test_file.9
    
    生成文件块     
    
  • 测试顺序写入

         sysbench --test=fileio --file-num=16 --file-block-size=16384 --file-total-size=2G --num-threads=4 --max-requests=100000000 --max-time=180 --file-test-mode=seqwr --file-extra-flags=direct run
    
        sysbench 0.4.12.6:  multi-threaded system evaluation benchmark
    
        Running the test with following options:
        Number of threads: 4
        Random number generator seed is 0 and will be ignored
    
    
        Extra file open flags: 16384
        16 files, 128Mb each
        2Gb total file size
        Block size 16Kb
        Periodic FSYNC enabled, calling fsync() each 100 requests.
        Calling fsync() at the end of test, Enabled.
        Using synchronous I/O mode
        Doing sequential write (creation) test
        Threads started!
    

测试过程中可以通过pidstat,监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程

pidstat -u
    cpu使用情况统计(-u)显示信息跟(top)类似

-
pidstat - r
内存使用情况统计(-r) (-p) 进程号

[root@s1rpg-game-016 ~]# pidstat -r -p 25815
Linux 2.6.32-573.8.1.el6.x86_64 (s1rpg-game-016)    12/18/2015  _x86_64_    (6 CPU)

07:07:28 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
07:07:28 PM     25815    115.15      0.00 6317496 3226944  19.84  mysqld

minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数(还需理解)
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生(还需理解)
VSZ: 该进程使用的虚拟内存(以kB为单位)
RSS: 该进程使用的物理内存(以kB为单位)
%MEM: 该进程使用内存的百分比
Command: 拉起进程对应的命令

IO情况统计(-d)(-t)(4)每4秒刷新一次

    [root@s1rpg-game-016 ~]# pidstat -d -t 4
    Linux 2.6.32-573.8.1.el6.x86_64 (s1rpg-game-016)    12/18/2015  _x86_64_    (6 CPU)
                                      读 / 秒   写 / 秒
    06:57:54 PM      TGID       TID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
    06:57:58 PM       415         -      0.00     32.75      0.00  jbd2/dm-0-8
    06:57:58 PM         -       415      0.00     32.75      0.00  |__jbd2/dm-0-8
    06:57:58 PM     27536         -      0.00 121266.50      0.00  sysbench
    06:57:58 PM         -     27537      0.00  28283.87      0.00  |__sysbench
    06:57:58 PM         -     27538      0.00  23368.73      0.00  |__sysbench
    06:57:58 PM         -     27539      0.00  33306.20      0.00  |__sysbench
    06:57:58 PM         -     27540      0.00  36303.72      0.00  |__sysbench

kB_rd/s: 每秒进程从磁盘读取的数据量(以kB为单位)
kB_wr/s: 每秒进程向磁盘写的数据量(以kB为单位)
Command: 拉起进程对应的命令

执行结果

    [root@s1rpg-game-016 sysbench-0.4.12.7]# ./sysbench/sysbench --test=fileio --file-num=16 --file-block-size=16384 --file-total-size=2G --num-threads=4 --max-requests=100000000 --max-time=180 --file-test-mode=seqwr --file-extra-flags=direct run
    sysbench 0.4.12.6:  multi-threaded system evaluation benchmark

    Running the test with following options:
    Number of threads: 4
    Random number generator seed is 0 and will be ignored

    --执行信息
    Extra file open flags: 16384
    16 files, 128Mb each
    2Gb total file size
    Block size 16Kb
    Periodic FSYNC enabled, calling fsync() each 100 requests.
    Calling fsync() at the end of test, Enabled.
    Using synchronous I/O mode
    Doing sequential write (creation) test
    Threads started!
    Done.

    --执行结构
    Operations performed:  0 Read, 131072 Write, 16 Other = 131088 Total
    Read 0b  Written 2Gb  Total transferred 2Gb  (116.17Mb/sec) --总写2G,平均116.17MB每秒
     7434.71 Requests/sec executed

    Test execution summary:
        total time:                          17.6297s       -- 总耗时
        total number of events:              131072         -- 共发生多少事务数
        total time taken by event execution: 70.3214        -- 所有事务耗时相加(不考虑并行因素)
        per-request statistics:
             min:                                  0.11ms    -- 最小耗时
             avg:                                  0.54ms    -- 平均耗时
             max:                                496.70ms    -- 最长耗时
             approx.  95 percentile:               0.80ms    -- 超过95%平均耗时

    Threads fairness:
        events (avg/stddev):           32768.0000/2870.22
        execution time (avg/stddev):   17.5803/0.00

注意:在测试写入之后,查看下测试文件块是否完整。不完整需clearup之后从新生成。
测试顺序读以及其他性能,修改–file-test-mode的参数即可。

你可能感兴趣的:(性能优化)