Vioperf
vioperf
utility quickly tests the performance of your host's input and output subsystem.
The vioperf
utility quickly tests the performance of your host's input and output subsystem. The utility performs the following tests:
-
sequential write
-
sequential rewrite
-
sequential read
-
skip read (read non-contiguous data blocks)
The utility verifies that the host reads the same bytes that it wrote and prints its output to STDOUT. The utility also logs the output to a JSON formatted file.
For data in HDFS, the utility tests reads but not writes.
Syntax
vioperf [--help] [--duration=<INTERVAL>] [--log-interval=<INTERVAL>]
[--log-file=<FILE>] [--condense-log] [--thread-count=<N>] [--max-buffer-size=<SIZE>]
[--preserve-files] [--disable-crc] [--disable-direct-io] [--debug]
[<DIR>*]
Minimum and recommended I/O performance
-
The minimum required I/O is 20 MB/s read/write per physical processor core on each node, in full duplex (reading and writing) simultaneously, concurrently on all nodes of the cluster.
Note
Vertica supports some AWS instance types that do not meet these minimum I/O requirements. However, all supported AWS instances types, regardless ofvioperf
performance, can be used as Vertica cluster hosts. See Supported AWS instance types for a list of all supported AWS instance types. -
The recommended I/O is 40 MB/s per physical core on each node.
-
The minimum required I/O rate for a node with 2 hyper-threaded six-core CPUs (12 physical cores) is 240 MB/s. Vertica recommends 480 MB/s.
For example, the I/O rate for a node with 2 hyper-threaded six-core CPUs (12 physical cores) is 240 MB/s required minimum, 480 MB/s recommended.
Disk space vioperf needs
vioperf
requires about 4.5 GB to run.
Options
--help
- Prints a help message and exits.
--duration
- The length of time
vioprobe
runs performance tests. The default is 5 minutes. Specify the interval in seconds, minutes, or hours with any of these suffixes:-
Seconds:
s
,sec
,secs
,second
,seconds
. Example:--duration=60sec
-
Minutes:
m
,min
,mins
,minute
,minutes
. Example:--duration=10min
-
Hours:
h
,hr
,hrs
,hour
,hours
. Example:--duration=1hrs
-
--log-interval
- The interval at which the log file reports summary information. The default interval is 10 seconds. This option uses the same interval notation as
--duration
. --log-file
- The path and name where log file contents are written, in JSON. If not specified, then
vioperf
creates a file namedresults
date-time.JSON
in the current directory. --condense-log
- Directs
vioperf
to write the log file contents in condensed format, one JSON entry per line, rather than as indented JSON syntax. --thread-count=<N>
- The number of execution threads to use. By default,
vioperf
uses all threads available on the host machine. --max-buffer-size=<SIZE>
- The maximum size of the in-memory buffer to use for reads or writes. Specify the units with any of these suffixes:
-
Bytes:
b
,byte
,bytes
. -
Kilobytes:
k
,kb
,kilobyte
,kilobytes
. -
Megabytes:
m
,mb
,megabyte
,megabytes
. -
Gigabytes:
g
,gb
,gigabyte
,gigabytes
.
-
--preserve-files
- Directs
vioperf
to keep the files it writes. This parameter is ignored for HDFS tests, which are read-only. Inspecting the files can help diagnose write-related failures. --disable-crc
- Directs
vioperf
to ignore CRC checksums when validating writes. Verifying checksums can add overhead, particularly when runningvioperf
on slower processors. This parameter is ignored for HDFS tests. --disable-direct-io
- When reading from or writing to a local file system,
vioperf
goes directly to disk by default, bypassing the operating system's page cache. Using direct I/O allowsvioperf
to measure performance quickly without having to fill the cache.Disabling this behavior can produce more realistic performance results but slows down the operation of
vioperf
. --debug
- Directs
vioperf
to report verbose error messages. <DIR>
- Zero or more directories to test. If you do not specify a directory,
vioperf
tests the current directory. To test the performance of each disk, specify different directories mounted on different disks.To test reads from a directory on HDFS:
-
Use a URL in the
hdfs
scheme that points to a single directory (not a path) containing files at least 10MB in size. For best results, use 10GB files and verify that there is at least one file pervioperf
thread. -
If you do not specify a host and port, set the HADOOP_CONF_DIR environment variable to a path including the Hadoop configuration files. This value is the same value that you use for the HadoopConfDir configuration parameter in Vertica. For more information see Configuring HDFS access.
-
If the HDFS cluster uses Kerberos, set the HADOOP_USER_NAME environment variable to a Kerberos principal.
-
Returns
The utility returns the following information:
test
- The test being run (Write, ReWrite, Read, or Skip Read)
directory
The directory in which the test is being run.
counter name
- The counter type of the test being run. Can be either MB/s or Seeks per second.
counter value
- The value of the counter in MB/s or Seeks per second across all threads. This measurement represents the bandwidth at the exact time of measurement. Contrast with counter value (avg).
counter value (10 sec avg)
- The average amount of data in MB/s, or the average number of Seeks per second, for the test being run in the duration specified with
--log-interval
. The default interval is 10 seconds. Thecounter value (avg)
is the average bandwidth since the last log message, across all threads. counter value/core
- The
counter value
divided by the number of cores. counter value/core (10 sec avg)
- The
counter value (10 sec avg)
divided by the number of cores. thread count
- The number of threads used to run the test.
%CPU
- The available CPU percentage used during this test.
%IO Wait
- The CPU percentage in I/O Wait state during this test. I/O wait state is the time working processes are blocked while waiting for I/O operations to complete.
elapsed time
- The amount of time taken for a particular test. If you run the test multiple times, elapsed time increases the next time the test is run.
remaining time
- The time remaining until the next test. Based on the
--duration
option, each of the tests is run at least once. If the test set is run multiple times, thenremaining time
is how much longer the test will run. Theremaining time
value is cumulative. Its total is added to elapsed time each time the same test is run again.
Example
Invoking vioperf
from a terminal outputs the following message and sample results:
[dbadmin@v_vmart_node0001 ~]$ /opt/vertica/bin/vioperf --duration=60s
The minimum required I/O is 20 MB/s read and write per physical processor core on each node, in full duplex
i.e. reading and writing at this rate simultaneously, concurrently on all nodes of the cluster.
The recommended I/O is 40 MB/s per physical core on each node.
For example, the I/O rate for a server node with 2 hyper-threaded six-core CPUs is 240 MB/s required minimum, 480 MB/s recommended.
Using direct io (buffer size=1048576, alignment=512) for directory "/home/dbadmin"
test | directory | counter name | counter value | counter value (10 sec avg) | counter value/core | counter value/core (10 sec avg) | thread count | %CPU | %IO Wait | elapsed time (s)| remaining time (s)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Write | /home/dbadmin | MB/s | 420 | 420 | 210 | 210 | 2 | 89 | 10 | 10 | 5
Write | /home/dbadmin | MB/s | 412 | 396 | 206 | 198 | 2 | 89 | 9 | 15 | 0
ReWrite | /home/dbadmin | (MB-read+MB-write)/s | 150+150 | 150+150 | 75+75 | 75+75 | 2 | 58 | 40 | 10 | 5
ReWrite | /home/dbadmin | (MB-read+MB-write)/s | 158+158 | 172+172 | 79+79 | 86+86 | 2 | 64 | 33 | 15 | 0
Read | /home/dbadmin | MB/s | 194 | 194 | 97 | 97 | 2 | 69 | 26 | 10 | 5
Read | /home/dbadmin | MB/s | 192 | 190 | 96 | 95 | 2 | 71 | 27 | 15 | 0
SkipRead | /home/dbadmin | seeks/s | 659 | 659 | 329.5 | 329.5 | 2 | 2 | 85 | 10 | 5
SkipRead | /home/dbadmin | seeks/s | 677 | 714 | 338.5 | 357 | 2 | 2 | 59 | 15 | 0