blob: 05ad69fd90f1d9d1037b08b132c3e69976839277 [file] [log] [blame]
COMMAND NAME: hawq checkperf
Verifies the baseline hardware performance of the specified hosts.
*****************************************************
SYNOPSIS
*****************************************************
hawq checkperf -d <test_directory> [-d <test_directory> ...]
{-f <hostfile_checkperf> | -h <hostname> [-h <hostname> ...]}
[-r ds] [-B <block_size>] [-S <file_size>] [-D] [-v|-V]
hawq checkperf -d <temp_directory>
{-f <hostfile_gpchecknet> | -h <hostname> [-h <hostname> ...]}
[ -r n|N|M [--duration <time>] [--netperf] ] [-D] [-v|-V]
hawq checkperf -?
hawq checkperf --version
*****************************************************
DESCRIPTION
*****************************************************
The hawq checkperf utility starts a session on the specified hosts
and runs the following performance tests:
* Disk I/O Test (dd test) - To test the sequential throughput
performance of a logical disk or file system, the utility uses
the dd command, which is a standard UNIX utility. It times how
long it takes to write and read a large file to and from disk
and calculates your disk I/O performance in megabytes (MB) per
second. By default, the file size that is used for the test is
calculated at two times the total RAM on the host. This ensures
that the test is truly testing disk I/O and not using the
memory cache.
* Memory Bandwidth Test (stream) - To test memory bandwidth, the
utility uses the STREAM benchmark program to measure sustainable
memory bandwidth (in MB/s). This tests that your system is not
limited in performance by the memory bandwidth of the system in
relation to the computational performance of the CPU. In applications
where the data set is large (as in HAWQ), low memory
bandwidth is a major performance issue. If memory bandwidth is
significantly lower than the theoretical bandwidth of the CPU,
then it can cause the CPU to spend significant amounts of time
waiting for data to arrive from system memory.
* Network Performance Test (gpnetbench) - To test network performance
(and thereby the performance of the HAWQ interconnect),
the utility runs a network benchmark program that transfers a 5
second stream of data from the current host to each remote host
included in the test. The data is transferred in parallel to each
remote host and the minimum, maximum, average and median network
transfer rates are reported in megabytes (MB) per second. If the
summary transfer rate is slower than expected (less than 100 MB/s),
you can run the network test serially using the -r n option to
obtain per-host results. To run a full-matrix bandwidth test,
you can specify -r M which will cause every host to send and
receive data from every other host specified. This test is
best used to validate if the switch fabric can tolerate a
full-matrix workload.
To specify the hosts to test, use the -f option to specify a file
containing a list of host names, or use the -h option to name
single host names on the command-line. If running the network
performance test, all entries in the host file must be for network
interfaces within the same subnet. If your segment hosts have multiple
network interfaces configured on different subnets, run the network
test once for each subnet.
You must also specify at least one test directory (with -d).
The user who runs hawq checkperf must have write access to the
specified test directories on all remote hosts. For the disk
I/O test, the test directories should correspond to your segment
data directories (primary and/or mirrors). For the memory bandwidth
and network tests, a temporary directory is required for the test
program files.
Before using hawq checkperf, you must have a trusted host setup between
the hosts involved in the performance test. Use the utility
gpssh-exkeys to update the known host files and exchange public
keys between hosts. Note that hawq checkperf calls to gpssh and gpscp,
so these HAWQ utilities must also be in your $PATH.
*****************************************************
OPTIONS
*****************************************************
-B <block_size>
Specifies the block size (in KB or MB) to use for
I/O test. The default is 32KB, the same as the HAWQ
page size. The maximum block size is 1 MB.
-d <test_directory>
For the disk I/O test, specifies the file system directory locations
to test. You must have write access to the test directory on all hosts
involved in the performance test. You can use the -d option multiple
times to specify multiple test directories (for example, to test disk
I/O of your primary and mirror data directories).
-d <temp_directory>
For the network and stream tests, specifies a single directory where the
test program files will be copied for the duration of the test. You must
have write access to this directory on all hosts involved in the test.
-D (display per-host results)
Reports performance results for each host for the disk I/O tests. The default
is to report results for just the hosts with the minimum and maximum
performance, as well as the total and average performance of all hosts.
--duration <time>
Specifies the duration of the network test in seconds (s),
minutes (m), hours (h), or days (d). The default is 15 seconds.
-f <hostfile_checkperf>
For the disk I/O and stream tests, specifies the name of a file that
contains one host name per host that will participate in the performance
test. The host name is required, and you can optionally specify an
alternate user name and/or SSH port number per host. The syntax of the
host file is one host per line as follows:
[username@]<hostname>[:ssh_port]
-f <hostfile_gpchecknet>
For the network performance test, all entries in the host file must be
for host adresses within the same subnet. If your segment hosts have
multiple network interfaces configured on different subnets, run the
network test once for each subnet. For example (a host file containing
segment host address names for interconnect subnet 1):
sdw1-1
sdw2-1
sdw3-1
-h <hostname>
Specifies a single host name (or host address) that will participate
in the performance test. You can use the -h option multiple times
to specify multiple host names.
--netperf
Specifies that the netperf binary should be used to perform the
network test instead of the HAWQ network test. To use this option,
you must download netperf from www.netperf.org and install it
into $GPHOME/bin/lib on all HAWQ hosts (master and segments).
-r ds{n|N|M}
Specifies which performance tests to run. The default is dsn:
* Disk I/O test (d)
* Stream test (s)
* Network performance test in sequential (n), parallel (N),
or full-matrix (M) mode. The optional --duration option specifies
how long (in seconds) to run the network test. To use the parallel
(N) mode, you must run the test on an even number of hosts.
If you would rather use netperf (www.netperf.org) instead of the
HAWQ network test, you can download it and install it into
$GPHOME/bin/lib on all HAWQ hosts (master and segments).
You would then specify the optional --netperf option to use the
netperf binary instead of the default gpnetbench* utilities.
-S file_size
Specifies the total file size to be used for the disk I/O test for
all directories specified with -d. file_size should equal two times
total RAM on the host. If not specified, the default is calculated
at two times the total RAM on the host where hawq checkperf is executed.
This ensures that the test is truly testing disk I/O and not using
the memory cache. You can specify sizing in KB, MB, or GB.
-v (verbose) | -V (very verbose)
Verbose mode shows progress and status messages of the performance tests
as they are run. Very verbose mode shows all output messages generated
by this utility.
--version
Displays the version of this utility.
-? (help)
Displays the online help.
*****************************************************
EXAMPLES
*****************************************************
Run the disk I/O and memory bandwidth tests on all the hosts
in the file host_file using the test directory of /data1 and /data2:
$ hawq checkperf -f hostfile_checkperf -d /data1 -d /data2 -r ds
Run only the disk I/O test on the hosts named sdw1 and sdw2
using the test directory of /data1. Show individual host
results and run in verbose mode:
$ hawq checkperf -h sdw1 -h sdw2 -d /data1 -r d -D -v
Run the parallel network test using the test directory of /tmp,
where host_file_subnet* specifies all network interface host
names within the same subnet:
$ hawq checkperf -f hostfile_gpchecknet_ic1 -r N -d /tmp
$ hawq checkperf -f hostfile_gpchecknet_ic2 -r N -d /tmp
Run the same test as above, but use netperf instead of the
HAWQ network test (note that netperf must be installed
in $GPHOME/bin/lib on all HAWQ hosts):
$ hawq checkperf -f hostfile_gpchecknet_ic1 -r N --netperf -d /tmp
$ hawq checkperf -f hostfile_gpchecknet_ic2 -r N --netperf -d /tmp
*****************************************************
SEE ALSO
*****************************************************
hawq ssh, hawq scp, hawq check