This topic describes basic commands and command syntax for using the Performance Analytics tool.

Statistic Types

More detailed information can be found about each statistic type through the command line interface (CLI) and webservices API, but the following table provides more information about how similar I/O stack statistic types relate to each other.  

Statistic TypeDescriptionAxis NameAxis DescriptionAxis Value Type
NFS_OPSProvides information about Network File System operations. This is the entry point to the Delphix Engine for all Oracle database file accesses.opI/O operation typeSTRING
pathPath of the affected fileSTRING
sizeI/O sizes in bytesHISTOGRAM
avgLatencyAverage I/O latency in nanosecondsINTEGER
cachedWhether reads were cachedBOOLEAN
latencyI/O latencies in nanosecondsHISTOGRAM
countNumber of I/O operationsINTEGER
clientAddress of the clientSTRING
throughputI/O throughput in bytesINTEGER
syncWhether writes were synchronousBOOLEAN

iSCSI_OPS

Provides information about iSCSI operations. This is the entry point to the Delphix Engine for all SQL Server file accesses.Same axes as NFS_OPS, except for path, cached, and sync.
VFS_OPSThis layer sits immediately below NFS_OPS and iSCSI_OPS. It should give almost exactly the same latencies, assuming no unexpected behavior is occurring.Same axes as NFS_OPS, except for client.
DxFS_OPS

This layer sits immediately below VFS_OPS, and the two of them should give almost exactly the same latencies.

Same axes as VFS_OPS.
DxFS_IO_QUEUE_OPSThis layer sits below DxFS_OPS, but the latencies will differ from that layer because this layer batches together operations to increase throughput.opI/O operation typeSTRING
countNumber of I/O operationsINTEGER
sizeI/O sizes in bytesHISTOGRAM
avgLatencyAverage I/O latency in nanosecondsINTEGER
latencyI/O latencies in nanosecondsHISTOGRAM
throughputI/O throughput in bytesINTEGER
priorityPriority of the I/OSTRING
DISK_OPSThis layer sits below DxFS_IO_QUEUE_OPS at the bottom of the I/O stack and measures interactions between the Delphix Engine and disks.opI/O operation typeSTRING
countNumber of I/O operationsINTEGER
sizeI/O sizes in bytesHISTOGRAM
avgLatencyAverage I/O latency in nanosecondsINTEGER
latencyI/O latencies in nanosecondsHISTOGRAM
throughputI/O throughput in bytesINTEGER
errorWhether the I/O resulted in an errorBOOLEAN
deviceDevice the I/O was issued toSTRING
CPU_UTILThis is unrelated to the layers of the I/O stack. It measures CPU utilization on the Delphix Engine.idleIdle time in milliseconds (showAxes command may incorrectly state nanoseconds)INTEGER
userUser time in milliseconds (showAxes command may incorrectly state nanoseconds) INTEGER
kernelKernel time in milliseconds (showAxes command may incorrectly state nanoseconds) INTEGER
dtrace

DTrace time in milliseconds (showAxes command may incorrectly state nanoseconds) 

Subset of time in kernel

INTEGER
cpuWhich CPU was utilizedINTEGER
NETWORK_INTERFACE_UTILNetwork interface utilization on the Delphix Engine.inBytesNumber of bytes receivedINTEGER
inPacketsNumber of packets receivedINTEGER
outBytesNumber of bytes transmittedINTEGER
outPacketsNumber of packets transmittedINTEGER
networkInterfaceWhich network interface was utilizedSTRING
TCP_STATSStatistics for all established TCP connections on the Delphix Engine.localAddressLocal address for the TCP connectionSTRING
localPortLocal port for the TCP connectionINTEGER
remoteAddressRemote address for the TCP connectionSTRING
remotePortRemote port for the TCP connectionINTEGER
inBytesData bytes receivedINTEGER
outBytesData bytes transmittedINTEGER
receiveWindowSizeThe size of the local receive windowINTEGER
sendWindowSizeThe size of the peer's receive windowINTEGER
congestionWindowSizeThe size of the local congestion windowINTEGER
retransmittedBytesBytes retransmittedINTEGER
inUnorderedBytesNumber of bytes received out of order. This is a subset of the "inBytes" valueINTEGER
unacknowledgedBytesNumber of bytes sent but unacknowledgedINTEGER
roundTripTimeSmoothed average round-trip time in microsecondsINTEGER

Statistic Axis Value Types

Values are returned when a slice's data is queried. Each axis has a value type, which specifies how the data will be returned.
Value TypeDescription
INTEGERThe value is returned as an integer. For information about what units the integer is measured in, read the documentation for the related datapoint or datapoint stream type.

BOOLEAN

The value is returned as a boolean.
STRINGThe value is returned as a string. This is used for enum values as well, although the set of strings which can be returned is limited.
HISTOGRAM

The value is returned as a log-scale histogram. The histogram has size buckets whose minimum and maximum value get doubled. Histograms are returned as JSON maps, where the keys are the minimum value in a bucket and the values are the height of each bucket.

Here is an example histogram. Notice that buckets with a height of zero are not included in the JSON object, and that keys and values are represented as strings.

{
    "32768": "10",
    "65536": "102",
    "262144": "15",
    "524288": "2"
}

Axis constraints are used to limit the data which a slice can collect. Each axis specifies a constraint type which can be used to limit that axis' values.

Constraint TypeDescription
BooleanConstraintA superclass which constraints on boolean values must extend. Currently, the only subclass is BooleanEqualConstraint, which requires that a boolean axis equal either true or false (depending on user input).
EnumConstraintA superclass which constraints on enum values must extend. Currently, the only subclass is EnumEqualConstraint, which requires that an enum axis be equal to a user-specified value.
IntegerConstraintA superclass which constraints on integer values must extend. Subclasses include IntegerLessThanConstraint, IntegerGreaterThanConstraint, and IntegerEqualConstraint, which map to the obvious comparators for integers.
NullConstraintThis class signifies that an axis cannot be constrained. This makes the most sense for axes which provide an average value - placing a constraint on an average doesn't make sense because you are not able to include or discard a particular operation based on what its effects would be on the average of all operations.
PathConstraintA superclass which constraints on file path values must extend. Currently, the only subclass is PathDescendantConstraint, which requires that a path value must be a descendant of the specified path (it must be contained within it). This only applies to paths on the Delphix Engine itself, and all paths used must be canonical Unix paths starting from the root of the filesystem.
StringConstraintA superclass which constraints on string values must extend. Currently, the only subclass is StringEqualsConstraint, which requires that a string value must equal a user-specified string.

Statistic Slice Commands

CommandDescription and Usage Examples
getDataThis is used to fetch data from a statistic slice which has been collecting data for a while. It returns a datapoint set, which is composed of datapoint streams, which contain datapoints. For a full description, see the Performance Analytics Tool Overview.
rememberRangeThis is used to ensure that data collected during an ongoing investigation doesn't get deleted unexpectedly. If this is not used, data is only guaranteed to be persisted for 24 hours. If it is used, data will be remembered until a corresponding call to stopRememberingRange is made.
stopRememberingRangeThis is used to allow previously-remembered data to be forgotten. The data will be forgotten on the same schedule as brand new data, so you will have at least 24 hours before data which you have stopped remembering is deleted. This undoes the rememberRange operation.
pauseThis command pauses the collection of a statistic slice, causing no data to be collected until resume is called.
resumeThis command resumes the collection of a statistic slice, undoing a pause operation.

Related Links