SGPDD Survey

Description
is an IO workload generator for benchmarking the performance of disk storage, generating large sequential IO workload on the target storage devices. It is a wrapper for the  (SCSI Generic Parallel DD) command found in the SCSI device utilities  package.

is a scalable version of the “ ” command with options for multi-threaded IO with different blocksizes and regionsizes. From the  man page:

 "[ is] specialised for "files" that are Linux SCSI generic (sg) and raw devices. Similar syntax and semantics to dd(1) but does not perform any conversions. Uses POSIX threads to increase the amount of parallelism. This improves speed in some cases."

Purpose
SGPDD-survey is intended to evaluate the raw performance of all LUNs in the storage arrays attached to a server. The benchmark is useful in testing the overall throughput of a storage controller and is typically run after establishing the baseline performance of the individual drives and/or LUNs attached through the controller.

The logic behind this process flow is to determine whether or not the storage controller or HBA or some other higher-level component within the server platform introduces a performance bottleneck, at least for bandwidth. One can normally derive the theoretical bandwidth of the data path from the hardware specifications. Low-level specifications for the disk drives and the I/O paths will determine the theoretical maximum bandwidth of the storage subsystem. One must consider the bandwidth of the PCIe bus, HBA, storage controller and the individual storage devices (disk drives and SSDs). The slowest component in the IO path will determine the maximum throughput that can be obtained by the system overall. The  benchmark can help to determine how close to the theoretical bandwidth the system is operating and highlight any significant deviation from the ideal.

is typically run within an individual host across all LUNs presented to that host. In high availability (HA) server configurations, where the storage will be presented in an active-passive failover configuration, the benchmark is normally run against the "primary" storage targets for each server only. That is, the LUNs are assumed to be mapped to their preferred servers.

Preparation
The  script is distributed in the   package, and requires the sgp_dd program from the   package. Install the  package on each of the machines that will be evaluated by the benchmark. On RHEL / CentOS systems,  will automatically resolve additional dependencies.

Configure all storage volumes into their production configuration and present the LUNs for use on the target host.

Benchmark Execution
The  script takes its parameters from environment variables established at run time. The parameters that are of most interest are as follows (refer to the section SGPDD-Survey Input Parameters for a detailed breakdown of the parameters and how to calculate suitable values):

The  option is typically chosen for hardware RAID storage systems, whereas the   option is typically required for software RAID devices.

The following is an example command line for executing :

 mkdir -p /var/tmp/sgpdd-survey_out

crglo=1 crghi=256 \ thrlo=1 thrhi=4096 \ size=51200 \ rslt_loc=/var/tmp/sgpdd-survey_out \ scsidevs="ct7-oss1:/dev/sdb ct7-oss1:/dev/sdc ct7-oss1:/dev/sdd" \ sgpdd-survey

MD RAID and Raw Devices
Software RAID volumes created with MD RAID should be submitted to the benchmark using the  input parameter, not. For this to work, bind the MD RAID block device to a raw device using the  command. e.g.:

 raw /dev/raw/raw1 /dev/md0

This will create a raw binding for the MD RAID device  to. The raw device name is arbitrary but take care not to overwrite an existing binding as the binding will be replaced without issuing a warning. One can also specify the major, minor numbers for the block device to be mapped. To list the existing raw bindings:

 raw -qa

To remove a binding, map the raw device to major and minor device numbers 0 0, e.g.:

 raw /dev/raw/raw1 0 0