JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual     Sun QFS and Sun Storage Archive Manager 5.3 Information Library
search filter icon
search icon

Document Information


1.  User Commands (Man Pages Section 1)

















2.  Maintenance Commands (Man Pages Section 1M)

3.  Library Functions (Man Pages Section 3)

4.  Library Functions (Man Pages Section 3X)

5.  File Formats (Man Pages Section 4)

6.  Standards, Environment, and Macros (Man Pages Section 5)

7.  Device and Network Interfaces (Man Pages Section 7)


     pdvt - POSIX Device Verification Tool

     pdvt  [-b]  [-B]  [-c  block_count]  [-C]  [-d]   [-D]   [-e
     data_error_limit] [-E io_error_limit] [-f] [-g stripe_group]
     [-G sync_file] [-h] [-i stride[k|m|g]] [-k  offset[k|m|g|t]]
     [-l  loops]  [-m  buffer[k|m|g|t]]  [-o  rw|wr|r|w] [-p] [-P
     a|o|0|r]  [-q  queue_size]  [-r]   [-R   read_threads]   [-s
     block_size[k|m]]   [-S  file_size[k|m|g|t]]  [-T]  [-u]  [-v
     log_mask] [-V] [-W write_threads] [-z  seconds]  filename  [
     filename_out ]

     Oracle Corporation

     The POSIX  Device  Verification  Test  ("PDVT")  uses  POSIX
     threads,  or  pthreads,  to test RAID device and file system
     I/O performance.

     PDVT uses the concept  of  thread  pools.   PDVT  (the  boss
     thread) creates a specified number of worker threads.  These
     worker threads survive for the duration of the program.  The
     PDVT  boss  thread  creates  I/O  requests  and  puts  these
     requests  on  a  work  queue.   Worker  threads  remove  I/O
     requests  from  the  work  queue  and  process them.  When a
     worker thread completes an I/O request, it  removes  another
     one from the work queue if the queue is not empty.

     -b   Perform backwards I/O.

     -B   Print I/O buffer information.

     -c  block_count
          The number of blocks to be written/read.

     -C   Specifies that I/O use the page cache.

     -d   Specifies direct I/O:  I/O  should  not  use  the  page

     -D   Live dangerously and allow PDVT to write to slices that
          start at cylinder 0.

     -e  data_error_limit
          Specifies the maximum number of data  miscompares  that
          can occur before the test is stopped.

     -E  io_error_limit
          Specifies the maximum number of  I/O  errors  that  can

          occur before the test is stopped.

     -f   Set read process to follow an active writer.

     -g  stripe_group
          Specifies the number of the  striped  group  where  the
          file  is  to be preallocated.  Stripe_group is a number
          0..n where n matches the gXXX devices configured in the
          SAM-QFS master configuration file.  This option is only
          processed if -p is specified and  it  only  applies  to
          SAM-QFS filesystems with configured stripe groups.

     -G sync_file
          Threads  will  wait  to  perform  I/O  until  sync_file
          exists.   Once  test  is complete the sync_file will be

     -h   Print usage information.

     -i  stride[k|m|g]
          Number of bytes to stride

     -k offset[k|m|g|t]
          Byte offset to start writing or reading from.

     -l  loops
          Number of times to loop before closing the file.   This
          option is useful for testing cache performance.

     -m bufsize[k|m|g|t]
          Buffer size for random data pattern.  Pattern is  based
          on  file  name and can therefore regenerate the data if
          using the same file name.  Used in combination with P r

     -o  rw|wr|r|w
          Operation options:

          rw - Read and write a file at the same time

          wr - Write then read a file

          r  - Read a file

          w  - Write a file

     -p   Specifies the file should be preallocated.  Striping is
          also  permitted  if striped groups have been configured
          as part of the filesystem.  This option only applies to
          SAM-QFS filesystems.

     -P  a|o|0|r

          The data pattern:

          a - ascending pattern based on file offset

          o - ones pattern

          0 - zeros pattern

          r - random pattern (requires -m option)

     -q  queue_size
          Specifies the number of the entries that will  be  out-
          standing  in  the work queue.  The queue_size should be
          larger than read_threads.

     -r   Perform random I/O

     -R  read_threads
          Specifies the number of the threads that will  be  out-
          standing  for  read.   If  read_threads  is  less  than
          write_threads, write_threads will be used.

     -s  block_size[k|m]
          Size of blocks to be written/read.

     -S  file_size[k|m|g|t]
          Size of file to be written/read.  File size  and  block
          count are mutually exclusive.

     -T   Start timing at memory allocation instead of I/O start.

     -u   Unlink file when finished.

     -v log_mask
          Set logging mask to print info, errors, results  and/or
          debugging   information.    Interpreted   in  octal  by
          default, and has a default  value  of  03  (print  test
          results and error messages).

          001 - Print test results (on by default)

          002 - Print error messages (on by default)

          004 - Print debugging information during test

          010 - Print lots of debugging information during test

          020 - Print read and/or write return values

     -V   Data will be verified on the read pass.  The times will
          include this comparison time.

     -W  write_threads
          Specifies the number of the threads that will  be  out-
          standing for write.

     -z  seconds
          Used in combination with f option to specify number  of
          seconds  to  sleep  before  retrying  a  read  request.
          Default is 50000000 nanoseconds.

     Example 1: Write a file using 4 write threads and  8  queued

     pdvt -o w -W 4 -q 8 -s 16m -S 4g /path/file.dat

     Example 2: Write a file with a random buffer for data verif-

     pdvt -P r -m 4g -o w -W 4 -q 8 -s 16m -S 4g /path/file.dat

     Example 3: Reading previous file with data verification

     pdvt -P  r  -m  4g  -V  -o  r  -R  4  -q  8  -s  16m  -S  4g

     The output  of  PDVT  will  vary  based  on  the  log  level
     selected.   Test  results  and  errors  will be displayed by
     default, but setting the log level to something like 7  will
     print the test results as well as the test configuration.

     Output for  results  and  information  are  comma  separated
     values that can be imported into a spreadsheet.

     Results:       operation,block      size(KB),fsize(KB),write
     threads,read  threads,queue size, wall time,user time,system

     Using the log level 10 will result in a  significant  amount
     of  output  showing  what  PDVT is doing.  Additionally, log
     level 4 will print out each buffer as it is compared with  a
     data verification read.

     The random data feature uses the file name provided  on  the
     command   line  to  produce  a  seed  that  is  fed  to  the
     srand48(3C) function call.  In order to verify a  file  once
     it  is  written,  the file name must be the same as given on
     the write command.

     Performance of a verification read should not be taken  into
     consideration as the throughput represents the time not only
     to read a  file,  but  also  to  verify  each  buffer.   The

     verification process can add many seconds to a read.


     sam_advise(3), sam_setfa(3)