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

