iozone的参数说明应该这样排列

 

iozone 

      1. man iozone
        1. 1. 输出格式
        2. 2. 基本参数
        3. 3. 文件读写方法(read/write, mmap, aio)
        4. 4. 文件打开参数 (direct_io, O_SYNC, ....) cache /buffer 相关
        5. 5. 读写时间计算
        6. 7. 其他
        7. 8. 无用
      2. 对buffer/cache相关参数影响的测试
        1. 为啥需要这个测试
        2. 测试过程
        3. 测试结果

man iozone


1. 输出格式


       -R     Generate  Excel  report.   Iozone  will  generate an Excel compatible report to
              standard out. This file may be imported with Microsoft Excel (space  delimited)
              and  used  to create a graph of the filesystem performance. Note: The 3D graphs
              are column oriented. You will need to select this when graphing as the  default
              in Excel is row oriented data.
       -b filename
              Used  to specify a filename that will be used for output of an Excel compatible
              file that contains the results.
       -M     Iozone will call uname() and will put the string in the output file.

2. 基本参数


       -a     Used to select full automatic mode. Produces output that covers all tested file
              operations for record sizes of 4k to 16M for file sizes of 64k to 512M.
       -i #   Used to specify which tests to run. (0=write/rewrite, 1=read/re-read, 2=random-
              read/write, 3=Read-backwards,  4=Re-write-record,  5=stride-read,  6=fwrite/re-
              fwrite,  7=fread/Re-fread,  8=mixed  workload, 9=pwrite/Re-pwrite, 10=pread/Re-
              pread, 11=pwritev/Re-pwritev, 12=preadv/Re-preadv).  One will  always  need  to
              specify  0  so  that  any  of  the following tests will have a file to measure.
              -i # -i # -i # is also supported so that one may select more than one test.
       -s #   Used  to specify the size, in Kbytes, of the file to test. One may also specify
              -s #k (size in Kbytes) or -s #m (size in Mbytes) or -s #g (size in Gbytes).
       -g #   Set maximum file size  (in Kbytes) for auto mode. One  may  also  specify  -g #k
              (size  in  Kbytes)  or -g #m (size in Mbytes) or -g #g (size in Gbytes). See -n
              for minimum file size.
       -n #   Set minimum file size (in Kbytes) for auto mode. One  may  also  specify  -n #k
              (size  in  Kbytes)  or -n #m (size in Mbytes) or -n #g (size in Gbytes). See -g
              for maximum file size.

       -r #   Used to specify the record size , in Kbytes, to test. One may also specify -r #k
              (size in Kbytes) or -r #m (size in Mbytes) or -r #g (size in Gbytes).
       -q #   Set  maximum  record size (in Kbytes) for auto mode. One may also specify -q #k
              (size in Kbytes) or -q #m (size in Mbytes) or -q #g (size in  Gbytes).  See  -y
              for minimum record size.
       -y #   Set minimum record size (in Kbytes) for auto mode. One may also  specify  -y #k
              (size  in  Kbytes)  or -y #m (size in Mbytes) or -y #g (size in Gbytes). See -q
              for maximum record size.


       -f filename
              Used to specify the filename for the temporary file under test. This is  useful
              when  the unmount option is used. When testing with unmount between tests it is
              necessary for the temporary file under test to be in a directory  that  can  be
              unmounted.  It  is not possible to unmount the current working directory as the
              process Iozone is running in this directory.
       -F filename filename filename ?
              Specify each of the temporary file names to be used in the  throughput   testing.
              The  number of names should be equal to the number of processes or threads that
              are specified.
       -w     Do not unlink temporary files when finished using them.

3. 文件读写方法(read/write, mmap, aio)

       -B     Use mmap() files. This causes all of the temporary files being measured  to  be
              created  and  accessed  with  the mmap() interface. Some applications prefer to
              treat files as arrays of memory. These applications mmap() the  file  and  then
              just access the array with loads and stores to perform file I/O.
       -H #   Use  POSIX  async I/O with # async operations.  Iozone will use POSIX async I/O
               with a bcopy  from the async buffers back into  the  applications  buffer.  Some
              versions of MSC NASTRAN perform I/O this way.  This technique is used by appli‐
              cations so that the async I/O may be performed in a  library  and  requires  no
              changes to the applications internal model.
       -k #   Use  POSIX async I/O (no bcopy) with # async operations.  Iozone will use POSIX
              async I/O and  will not perform any extra bcopys . The  buffers  used  by  Iozone
              will be handed to the async I/O system call directly.
       -Z     Enable mixing of mmap I/O and file I/O.

4. 文件打开参数 (direct_io, O_SYNC, ....) cache /buffer 相关

       -D     Use msync(MS_ASYNC) on mmap files. This tells the operating system that all the
              data in the mmap space needs to be written to disk asynchronously.
       -G     Use msync(MS_SYNC) on mmap files. This tells the operating system that all  the
              data in the mmap space needs to be written to disk synchronously.

        -I      Use DIRECT IO if possible for all file operations. Tells  the  filesystem  that
              all  operations  to  the file are to bypass the buffer cache and go directly to
              disk. (not available on all platforms)

        -o      Writes are synchronously written to disk. (O_SYNC).  Iozone will open the files
              with  the  O_SYNC  flag. This forces all writes to the file to go completely to
              disk before returning to the benchmark.
        -p      This purges the processor cache before each file operation.  Iozone will  allo‐
              cate another internal buffer that is aligned to the same processor cache bound‐
              ary and is of a size that matches the processor cache.  It will zero fill  this
              alternate  buffer  before  beginning  each test.  This will purge the processor
              cache and allow one to see the memory subsystem without the acceleration due to
              the processor cache.  我觉得这个影响应该蛮小 -Lin Yang 5/20/10 12:45 PM  

5. 读写时间计算

       -c     Include  close() in the timing calculations. This is useful only if you suspect
              that close() is broken in the operating system currently under test.  It can be
              useful for NFS Version 3 testing as well to help identify if the nfs3_commit is
              working well.
        -e      Include flush (fsync,fflush) in the timing calculations

6. throughput模式 (多线程)
       -t #   Run Iozone in a throughput mode. This option allows the  user  to  specify  how
              many threads or processes to have active during the measurement.
       -l #   Set  the  lower  limit  on  number of processes to run. When running throughput
              tests this option allows the user to specify the least number of  processes  or
              threads to start. This option should be used in conjunction with the -u option.
       -u #   Set the upper limit on number of processes  to  run.  When  running  throughput
              tests  this  option allows the user to specify the greatest number of processes
              or threads to start. This option should be used in conjunction with the -l  op‐
              tion.
       -T     Use POSIX pthreads for throughput tests. Available on platforms that have POSIX
              threads.
       -C     Show bytes transferred by each child in  throughput  testing. Useful if your  op‐
              erating  system  has  any starvation problems in file I/O or in process manage‐
              ment.
       -d #   Microsecond delay out of barrier. During the  throughput  tests  all  threads  or
              processes  are  forced to a barrier before beginning the test. Normally, all of
              the threads or processes are released at the same moment.  This  option  allows
              one  to  delay  a  specified time in microseconds between releasing each of the
              processes or threads.


7. 其他

       -h     Displays help screen.
       -v     Display the version of Iozone.


       -j #   Set stride of file accesses to (# * record size). The  stride  read  test  will
              read records at this stride.  -跨步

       -J #   Millisecond delay before each I/O operation. This simulates the cpu compute cy‐
              cle of an application that precedes an I/O operation.  One may also use  -X  or
              -Y to control the compute cycle on a per I/O operation basis.
       -K     Inject some random accesses in the testing.
       -L #   Set  processor  cache line size to value (in bytes). Tells Iozone the processor
              cache line size.  This is used internally to help speed up the test.
       -m     Tells Iozone to use multiple buffers internally. Some applications read into  a
              single  buffer  over and over. Others have an array of buffers. This option al‐
              lows both types of applications to be simulated.  Iozone´s default behavior  is
              to  re-use internal buffers. This option allows one to override the default and
              to use multiple internal buffers.

       -N     Report results in microseconds per operation.
       -O     Give results in operations per second.

       -V #   Specify a pattern that is to be written to the temporary file and validated for
              accuracy in each of the read tests.



       -W     Lock file when reading or writing.


       -Q     Create  offset/latency  files.   Iozone  will create latency versus offset data
              files that can be imported with a graphics package and plotted. This is  useful
              for  finding  if  certain  offsets  have very high latencies. Such as the point
              where UFS will allocate its first indirect block.  One can see  from  the  data
              the  impacts  of  the extent allocations for extent based filesystems with this
              option.   文件某个offset的读写latency记录 -Lin Yang 5/20/10 11:39 AM  

       -X filename
              Used to specify a filename that will be used for the write  telemetry  informa‐
              tion. The file contains lines with offset, size, delay_in_milliseconds. Each of
              these lines are used to perform an I/O operation.  This is used when an  appli‐
              cation's  specific  I/O  operations  are known, and one wishes to benchmark the
              system with this specific application file behavior.

       -Y filename
              Used to specify a filename that will be used for the  read  telemetry  informa‐
              tion. The file contains lines with offset, size, delay_in_milliseconds. Each of
              these lines are used to perform an I/O operation.  This is used when an  appli‐
              cation's  specific  I/O  operations  are known, and one wishes to benchmark the
              system with this specific application file behavior.


8. 无用


       -A     This version of automatic mode provides more coverage but consumes a  bunch  of
              time.  The -a option will automatically stop using transfer sizes less than 64k
              once the file size is 32M or larger. This saves time. The -A option  tells  Io‐
              zone  that  you are willing to wait and want dense coverage for small transfers
              even when the file size is very large.  NOTE: This option is  deprecated  in  Io‐
              zone version 3.61.  Use -az -i 0 -i 1 instead.


       -E     Used  to  select  the  extension  tests. Only available on some platforms. Uses
              pread interfaces.

       -P #   Bind  processes/threads to processors, starting with this cpu #. Only available
              on some platforms. The first sub process or thread will begin on the  specified
              processor.  Future  processes  or threads will be placed on the next processor.
              Once the total number of cpus is exceeded then future processes or threads will
              be placed in a round robin fashion.

       -x     Turn off stone-walling. Stonewalling is a technique used internally to  Iozone.
              It is used during the throughput tests. The code starts all threads or process‐
              es and then stops them on a barrier.  Once they are all  ready  to  start  then
              they  are  all released at the same time. The moment that any of the threads or
              processes finish their work then the entire test is terminated  and  throughput
              is  calculated  on  the total I/O that was completed up to t his point. This en‐
              sures that the entire measurement was taken  while  all  of  the  processes  or
              threads  were  running  in  parallel.   This  flag  allows  one to turn off the
              stonewalling and see what happens.


       -S #   Set processor cache size to value (in Kbytes). This tells Iozone  the  size  of
              the  processor  cache.   It is used internally for buffer alignment and for the
              purge functionality.



       -z     Used in conjunction with -a to test all possible record sizes. Normally  Iozone
              omits  testing of small record sizes for very large files when used in full au‐
              tomatic mode. This option forces Iozone to include the small  record  sizes  in
              the automatic tests also.



       -+m filename
              Used  to  specify a filename that will be used to specify the clients in a  dis‐
              tributed  measurement. The file contains one line for each  client.  The  fields
              are  space delimited. Field 1 is the client name. Field 2 is the working direc‐
              tory, on the client, where Iozone will run. Field 3 is the  path  to  the  exe‐
              cutable Iozone on the client.

       -+u    Used to enable CPU statistics collection.

       -+d    Diagnostic mode to troubleshoot a broken file I/O subsystem.

       -+p percentage_reads
              Used  to set the percentage of threads/processes that will perform read testing
              in the mixed workload test case.

       -+r    Enable O_RSYNC | O_SYNC on all testing.

       -+l    Enable byte range locking.

       -+L    Enable byte range locking & shared file mode.

       -+D    Enable O_DSYNC on all testing.

       -+t    Enable network performance test. Use with -+m

       -+A#   Enable madvise  behavior.  0  =  normal,  1=random,  2=sequential,  3=dontneed,
              4=willneed

       -+B    Enable sequential mixed workload testing.

       -+T    Enable time stamps logging.

       -+h    Manually set hostname.

       -+w#   Percentage of data to be de-dupable between files.

对buffer/cache相关参数影响的测试

为啥需要这个测试

    测试过程中,发现有的时候测的的读数据可以达到3G/s,这是由于需要读取的数据在系统cache中已经存在造成的.
    于是,需要考虑cache(和buffer)对系统的影响 。


-I参数确实非常有效,在测试yfs的时候出来的
使用free -m可以看出来,

当iozone跑的filesize = 256M的时候  cache 为200多m
当iozone跑的filesize = 512M的时候 cache 也变成500多m

通过echo 3 > /proc/sys/vm/drop_caches 可以清空这个cache
 -Lin Yang 5/13/10 3:28 PM

于是,我开始对这些参数的作用进行一个比较:


考察以下参数:
        -I     DIRECT IO
        -o     Writes are synchronously written to disk. (O_SYNC)
        -p    purges the processor cache before each file operation
       -c    Include  close() in the timing calculations
        -e     Include flush (fsync,fflush) in the timing calculations

测试过程

无参数时候的命令为:

  iozone -i0 -i1 -s256M -r1M

加-I参数时候: 

  iozone -i0 -i1 -s256M -r1M -I

加其它参数的时候类似.

测试结果

(下表测试在leap机器 <8G内存, ext3> )

KB reclen write rewrite read reread
无参数 262,144 1,024 556,191 1,480,864 2,471,724 2,556,356
-I 262,144 1,024 28,340 28,243 80,484 80,595 r/w都是硬盘
-o 262,144 1,024 13,621 30,028 2,460,777 2,521,099 对写有影响
对cache没用
-p 262,144 1,024 517,321 1,217,044 1,843,331 1,891,535  无影响
-c 262,144 1,024 545,627 1,485,369 2,484,093 2,546,646  无影响
-e 262,144 1,024 32,075 33,154 2,254,553 2,247,461  对写有影响
对cache没用








-I -o 262,144 1,024 13,420 27,836 75,591 79,017
-I -e 262,144 1,024 28,089 28,015 78,873 78,870 same as -I
-o -e 262,144 1,024 13,924 31,526 2,249,295 2,568,155 same as -o

可以看出,这些参数的影响 :
  • 认为-c  -p 影响很小
  • 只有-I 影响read speed .
  • 对于write speed,影响大小排序: -o > -I > -e

下面为同等情况下 mfs的测试:
mfs参数: 
3machines , every machine have 3 harddisks , goal=2


KB reclen write rewrite read reread
无参数

106,027 54,228 168,032 148,067
-I 262144 1024 - - - -
-o 262144 1024 51,404 48,123 138,059 147,027
-p 262144 1024 51,704 56,547 140,665 149,992
-c 262144 1024 40,275 47,969 150,859 154,274
-e 262144 1024 32,546 39,377 145,963 152,111








-I -o 262144 1024 - - - -
-I -e 262144 1024 - - - -
-o -e 262144 1024 42,031 40,780 148,862 150,961

mfs下,这些参数好像不太有用.

例子

性能测试:
/usr/local/iozone/iozone -i 0 -i 1 -g 12G -Rab out.wks

吞吐率测试:
iozone -t -T -u64 -l64

iozone -i0 -i1 -t -u64 -l32 -w -s1M 
文件1M,并发从32到64

你可能感兴趣的:(linux)