Friday, February 22, 2013

Disk performance test with IBM ndisk64 tool

ndisk64 is  an IBM free tool to measure  IO performance of   your  disk .
You can download  and  get information  from http://www.ibm.com/developerworks/wikis/display/WikiPtype/nstress
  • I have  created  7   different 10g files on all mout points in order  to  spread   IO
    dd if=/dev/zero of=/datac1/bigfile1 bs=1m count=10240
    dd if=/dev/zero of=/datac2/bigfile2 bs=1m count=10240
    dd if=/dev/zero of=/datac3/bigfile3 bs=1m count=10240
    dd if=/dev/zero of=/datac4/bigfile4 bs=1m count=10240
    dd if=/dev/zero of=/datac5/bigfile5 bs=1m count=10240
    dd if=/dev/zero of=/datac6/bigfile6 bs=1m count=10240
    dd if=/dev/zero of=/datac7/bigfile7 bs=1m count=10240
  • Put the names  of the files  to   a  input file

    echo "/datac1/bigfile1" >filelist
    echo "/datac2/bigfile2">>filelist
    echo "/datac3/bigfile3">>filelist
    echo "/datac4/bigfile4">>filelist
    echo "/datac5/bigfile5">>filelist
    echo "/datac6/bigfile6">>filelist
    echo "/datac7/bigfile7">>filelist
  • Identify  some  system values and  also  define some assumptions   about  your  system my assumptions and system   values  are

    Block size=8k
    Read-WriteRatio: 70:30 = read mostly(OLTP)
    Timed duration of the test in seconds =120
     Mutliple processes used to generate =3
  • Start  test  for different multiple  process
       /home/sturgut/ndisk64 -F filelist  -S -r70 -b 8k -t 120  -M3
    Command: /home/sturgut/ndisk64 -F filelist -S -r70 -b 8k -t 120 -M3
            Synchronous Disk test (regular read/write)
            No. of processes = 3
            I/O type         = Sequential
            Block size       = 8192
            Read-WriteRatio: 70:30 = read mostly
            Sync type: none  = just close the file
            Number of files  = 7
            File size        = 33554432 bytes = 32768 KB = 32 MB
            Run time         = 120 seconds
            Snooze %         = 0 percent
    ----> Running test with block Size=8192 (8KB) ...
    Proc - <-----disk io----=""> | <-----throughput------> RunTime
     Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
       1 -   2523632  21030.3 |    164.30    168242.34 120.00
       2 -   2442193  20351.6 |    159.00    162813.09 120.00
       3 -   2097104  17475.9 |    136.53    139807.03 120.00
    TOTALS   7062929  58857.8 |    459.83 Seq procs=  3 read= 70% bs=  8KB
  • In another session Monitor  IO service times using # iostat -RDTl
  • Increase  the different multiple process  and monitor  the  service time .Create a IOPS vs. IO service time chart
  • Increase the number of threads to get a peak IOPS
  • Be sure your queue_depth is >= number of threads
  • More than queue_depth x 2 threads won’t increase thruput