mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
dad02900f1
Although the use of the first region_id in a group to store the DMS_GROUP=... aux_data tag is an internal implementation detail, it has a user visible consequence in that deleting this region will cause the group to disappear: add an explanation of this to the 'group' command and 'Regions, areas, and groups' section.
1100 lines
29 KiB
Groff
1100 lines
29 KiB
Groff
.TH DMSTATS 8 "Jun 23 2016" "Linux" "MAINTENANCE COMMANDS"
|
|
|
|
.de OPT_PROGRAMS
|
|
. RB \%[ \-\-allprograms | \-\-programid
|
|
. IR id ]
|
|
..
|
|
.
|
|
.de OPT_REGIONS
|
|
. RB \%[ \-\-allregions | \-\-regionid
|
|
. IR id ]
|
|
..
|
|
.de OPT_OBJECTS
|
|
. RB [ \-\-area ]
|
|
. RB [ \-\-region ]
|
|
. RB [ \-\-group ]
|
|
..
|
|
.
|
|
.\" Print units suffix, use with arg to print human
|
|
.\" man2html can't handle too many changes per command
|
|
.de UNITS
|
|
. BR b | B | s | S | k | K | m | M | \c
|
|
. BR g | G | t | T | p | P | e | E ]
|
|
..
|
|
.
|
|
.\" Print help text for units, use with arg to print human
|
|
.de HELP_UNITS
|
|
. RB ( b )ytes,
|
|
. RB ( s )ectors,
|
|
. RB ( k )ilobytes,
|
|
. RB ( m )egabytes,
|
|
. RB ( g )igabytes,
|
|
. RB ( t )erabytes,
|
|
. RB ( p )etabytes,
|
|
. RB ( e )xabytes.
|
|
. nop Capitalise to use multiples of 1000 (S.I.) instead of 1024.
|
|
..
|
|
.
|
|
.SH NAME
|
|
.
|
|
dmstats \(em device-mapper statistics management
|
|
.
|
|
.SH SYNOPSIS
|
|
.
|
|
.B dmsetup
|
|
.B stats
|
|
.I command
|
|
.RB [ options ]
|
|
.sp
|
|
.
|
|
.PD 0
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_COMMAND
|
|
. ad l
|
|
. IR command
|
|
. RI [ device_name
|
|
. RB | \-\-uuid
|
|
. IR uuid | \fB\-\-major
|
|
. IR major
|
|
. BR \-\-minor
|
|
. IR minor ]
|
|
. ad b
|
|
..
|
|
.CMD_COMMAND
|
|
.
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_CLEAR
|
|
. ad l
|
|
. BR clear
|
|
. IR device_name
|
|
. OPT_PROGRAMS
|
|
. OPT_REGIONS
|
|
. ad b
|
|
..
|
|
.CMD_CLEAR
|
|
.
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_CREATE
|
|
. ad l
|
|
. BR create
|
|
. RB [ device_name...
|
|
. RB | file_path... ]
|
|
. RB [ \-\-alldevices ]
|
|
. RB [ \-\-areas
|
|
. IR nr_areas | \fB\-\-areasize
|
|
. IR area_size ]
|
|
. RB [ \-\-bounds
|
|
. IR \%histogram_boundaries ]
|
|
. RB [ \-\-filemap ]
|
|
. RB [ \-\-nogroup ]
|
|
. RB [ \-\-precise ]
|
|
. RB [ \-\-start
|
|
. IR start_sector
|
|
. BR \-\-length
|
|
. IR length | \fB\-\-segments ]
|
|
. RB \%[ \-\-userdata
|
|
. IR user_data ]
|
|
. RB [ \-\-programid
|
|
. IR id ]
|
|
. ad b
|
|
..
|
|
.CMD_CREATE
|
|
.
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_DELETE
|
|
. ad l
|
|
. BR delete
|
|
. RI [ device_name ]
|
|
. RB [ \-\-alldevices ]
|
|
. OPT_PROGRAMS
|
|
. OPT_REGIONS
|
|
. ad b
|
|
..
|
|
.CMD_DELETE
|
|
.
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_GROUP
|
|
. ad l
|
|
. BR group
|
|
. RI [ device_name ]
|
|
. RB [ \-\-alias
|
|
. IR name ]
|
|
. RB [ \-\-alldevices ]
|
|
. RB [ \-\-regions
|
|
. IR regions ]
|
|
. ad b
|
|
..
|
|
.CMD_GROUP
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_HELP
|
|
. ad l
|
|
. BR help
|
|
. RB [ \-c | \-C | \-\-columns ]
|
|
. ad b
|
|
..
|
|
.CMD_HELP
|
|
.
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_LIST
|
|
. ad l
|
|
. BR list
|
|
. RI [ device_name ]
|
|
. RB [ \-\-histogram ]
|
|
. OPT_PROGRAMS
|
|
. RB [ \-\-units
|
|
. IR units ]
|
|
. OPT_OBJECTS
|
|
. RB \%[ \-\-nosuffix ]
|
|
. RB [ \-\-notimesuffix ]
|
|
. RB \%[ \-v | \-\-verbose [ \-v | \-\-verbose ]]
|
|
. ad b
|
|
..
|
|
.CMD_LIST
|
|
.
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_PRINT
|
|
. ad l
|
|
. BR print
|
|
. RI [ device_name ]
|
|
. RB [ \-\-clear ]
|
|
. OPT_PROGRAMS
|
|
. OPT_REGIONS
|
|
. ad b
|
|
..
|
|
.CMD_PRINT
|
|
.
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_REPORT
|
|
. ad l
|
|
. BR report
|
|
. RI [ device_name ]
|
|
. RB [ \-\-interval
|
|
. IR seconds ]
|
|
. RB [ \-\-count
|
|
. IR count ]
|
|
. RB [ \-\-units
|
|
. IR units ]
|
|
. RB [ \-\-histogram ]
|
|
. OPT_PROGRAMS
|
|
. OPT_REGIONS
|
|
. OPT_OBJECTS
|
|
. RB [ \-O | \-\-sort
|
|
. IR sort_fields ]
|
|
. RB [ \-S | \-\-select
|
|
. IR selection ]
|
|
. RB [ \-\-units
|
|
. IR units ]
|
|
. RB [ \-\-nosuffix ]
|
|
. RB \%[ \-\-notimesuffix ]
|
|
. ad b
|
|
..
|
|
.CMD_REPORT
|
|
.HP
|
|
.B dmstats
|
|
.de CMD_UNGROUP
|
|
. ad l
|
|
. BR ungroup
|
|
. RI [ device_name ]
|
|
. RB [ \-\-alldevices ]
|
|
. RB [ \-\-groupid
|
|
. IR id ]
|
|
. ad b
|
|
..
|
|
.CMD_UNGROUP
|
|
.
|
|
.PD
|
|
.ad b
|
|
.
|
|
.SH DESCRIPTION
|
|
.
|
|
The dmstats program manages IO statistics regions for devices that use
|
|
the device-mapper driver. Statistics regions may be created, deleted,
|
|
listed and reported on using the tool.
|
|
|
|
The first argument to dmstats is a \fIcommand\fP.
|
|
|
|
The second argument is the \fIdevice name\fP,
|
|
\fIuuid\fP or \fImajor\fP and \fIminor\fP numbers.
|
|
|
|
Further options permit the selection of regions, output format
|
|
control, and reporting behaviour.
|
|
|
|
When no device argument is given dmstats will by default operate on all
|
|
device-mapper devices present. The \fBcreate\fP and \fBdelete\fP
|
|
commands require the use of \fB\-\-alldevices\fP when used in this way.
|
|
.
|
|
.SH OPTIONS
|
|
.
|
|
.HP
|
|
.BR \-\-alias
|
|
.IR name
|
|
.br
|
|
Specify an alias name for a group.
|
|
.
|
|
.HP
|
|
.BR \-\-alldevices
|
|
.br
|
|
If no device arguments are given allow operation on all devices when
|
|
creating or deleting regions.
|
|
.
|
|
.HP
|
|
.BR \-\-allprograms
|
|
.br
|
|
Include regions from all program IDs for list and report operations.
|
|
.br
|
|
.HP
|
|
.BR \-\-allregions
|
|
.br
|
|
Include all present regions for commands that normally accept a single
|
|
region identifier.
|
|
.
|
|
.HP
|
|
.BR \-\-area
|
|
.br
|
|
When peforming a list or report, include objects of type area in the
|
|
results.
|
|
.
|
|
.HP
|
|
.BR \-\-areas
|
|
.IR nr_areas
|
|
.br
|
|
Specify the number of statistics areas to create within a new region.
|
|
.
|
|
.HP
|
|
.BR \-\-areasize
|
|
.IR area_size \c
|
|
.RB [ \c
|
|
.UNITS
|
|
.br
|
|
Specify the size of areas into which a new region should be divided. An
|
|
optional suffix selects units of:
|
|
.HELP_UNITS
|
|
.
|
|
.HP
|
|
.BR \-\-clear
|
|
.br
|
|
When printing statistics counters, also atomically reset them to zero.
|
|
.
|
|
.HP
|
|
.BR \-\-count
|
|
.IR count
|
|
.br
|
|
Specify the iteration count for repeating reports. If the count
|
|
argument is zero reports will continue to repeat until interrupted.
|
|
.
|
|
.HP
|
|
.BR \-\-group
|
|
.br
|
|
When peforming a list or report, include objects of type group in the
|
|
results.
|
|
.
|
|
.HP
|
|
.BR \-\-filemap
|
|
.br
|
|
Instead of creating regions on a device as specified by command line
|
|
options, open the file found at each \fBfile_path\fP argument, and
|
|
create regions corresponding to the locations of the on-disk extents
|
|
allocated to the file(s).
|
|
.
|
|
.HP
|
|
.BR \-\-groupid
|
|
.IR id
|
|
.br
|
|
Specify the group to operate on.
|
|
.
|
|
.HP
|
|
.BR \-\-bounds
|
|
.IR histogram_boundaries \c
|
|
.RB [ ns | us | ms | s ]
|
|
.br
|
|
Specify the boundaries of a latency histogram to be tracked for the
|
|
region as a comma separated list of latency values. Latency values are
|
|
given in nanoseconds. An optional unit suffix of
|
|
.BR ns ,
|
|
.BR us ,
|
|
.BR ms ,
|
|
or \fBs\fP may be given after each value to specify units of
|
|
nanoseconds, microseconds, miliseconds or seconds respectively.
|
|
.
|
|
.HP
|
|
.BR \-\-histogram
|
|
.br
|
|
When used with the \fBreport\fP and \fBlist\fP commands select default
|
|
fields that emphasize latency histogram data.
|
|
.
|
|
.HP
|
|
.BR \-\-interval
|
|
.IR seconds
|
|
.br
|
|
Specify the interval in seconds between successive iterations for
|
|
repeating reports. If \fB\-\-interval\fP is specified but
|
|
\fB\-\-count\fP is not,
|
|
reports will continue to repeat until interrupted.
|
|
.
|
|
.HP
|
|
.BR \-\-length
|
|
.IR length \c
|
|
.RB [ \c
|
|
.UNITS
|
|
.br
|
|
Specify the length of a new statistics region in sectors. An optional
|
|
suffix selects units of:
|
|
.HELP_UNITS
|
|
.
|
|
.HP
|
|
.BR \-j | \-\-major
|
|
.IR major
|
|
.br
|
|
Specify the major number.
|
|
.
|
|
.HP
|
|
.BR \-m | \-\-minor
|
|
.IR minor
|
|
.br
|
|
Specify the minor number.
|
|
.
|
|
.HP
|
|
.BR \-\-nogroup
|
|
.br
|
|
When creating regions mapping the extents of a file in the file
|
|
system, do not create a group or set an alias.
|
|
.
|
|
.HP
|
|
.BR \-\-nosuffix
|
|
.br
|
|
Suppress the suffix on output sizes. Use with \fB\-\-units\fP
|
|
(except h and H) if processing the output.
|
|
.
|
|
.HP
|
|
.BR \-\-notimesuffix
|
|
.br
|
|
Suppress the suffix on output time values. Histogram boundary values
|
|
will be reported in units of nanoseconds.
|
|
.
|
|
.HP
|
|
.BR \-o | \-\-options
|
|
.br
|
|
Specify which report fields to display.
|
|
.
|
|
.HP
|
|
.BR \-O | \-\-sort
|
|
.IR sort_fields
|
|
.br
|
|
Sort output according to the list of fields given. Precede any
|
|
sort field with '\fB-\fP' for a reverse sort on that column.
|
|
.
|
|
.HP
|
|
.BR \-\-precise
|
|
.br
|
|
Attempt to use nanosecond precision counters when creating new
|
|
statistics regions.
|
|
.
|
|
.HP
|
|
.BR \-\-programid
|
|
.IR id
|
|
.br
|
|
Specify a program ID string. When creating new statistics regions this
|
|
string is stored with the region. Subsequent operations may supply a
|
|
program ID in order to select only regions with a matching value. The
|
|
default program ID for dmstats-managed regions is "dmstats".
|
|
.
|
|
.HP
|
|
.BR \-\-region
|
|
.br
|
|
When peforming a list or report, include objects of type region in the
|
|
results.
|
|
.
|
|
.HP
|
|
.BR \-\-regionid
|
|
.IR id
|
|
.br
|
|
Specify the region to operate on.
|
|
.
|
|
.HP
|
|
.BR \-\-regions
|
|
.IR region_list
|
|
.br
|
|
Specify a list of regions to group. The group list is a comma-separated
|
|
list of region identifiers. Continuous sequences of identifiers may be
|
|
expressed as a hyphen separated range, for example: '1-10'.
|
|
.
|
|
.HP
|
|
.BR \-\-relative
|
|
.br
|
|
If displaying the histogram report show relative (percentage) values
|
|
instead of absolute counts.
|
|
.
|
|
.HP
|
|
.BR \-S | \-\-select
|
|
.IR selection
|
|
.br
|
|
Display only rows that match \fIselection\fP criteria. All rows with the
|
|
additional "selected" column (\fB\-o selected\fP) showing 1 if the row matches
|
|
the \fIselection\fP and 0 otherwise. The selection criteria are defined by
|
|
specifying column names and their valid values while making use of
|
|
supported comparison operators.
|
|
.
|
|
.HP
|
|
.BR \-\-start
|
|
.IR start \c
|
|
.RB [ \c
|
|
.UNITS
|
|
.br
|
|
Specify the start offset of a new statistics region in sectors. An
|
|
optional suffix selects units of:
|
|
.HELP_UNITS
|
|
.
|
|
.HP
|
|
.BR \-\-segments
|
|
.br
|
|
When used with \fBcreate\fP, create a new statistics region for each
|
|
target contained in the given device(s). This causes a separate region
|
|
to be allocated for each segment of the device.
|
|
|
|
The newly created regions are automatically placed into a group unless
|
|
the \fB\-\-nogroup\fP option is given. When grouping is enabled a group
|
|
alias may be specified using the \fB\-\-alias\fP option.
|
|
.
|
|
.HP
|
|
.BR \-\-units
|
|
.RI [ units ] \c
|
|
.RB [ h | H | \c
|
|
.UNITS
|
|
.br
|
|
Set the display units for report output.
|
|
All sizes are output in these units:
|
|
.RB ( h )uman-readable,
|
|
.HELP_UNITS
|
|
Can also specify custom units e.g. \fB\-\-units\ 3M\fP.
|
|
.
|
|
.HP
|
|
.BR \-\-userdata
|
|
.IR user_data
|
|
.br
|
|
Specify user data (a word) to be stored with a new region. The value
|
|
is added to any internal auxilliary data (for example, group
|
|
information), and stored with the region in the aux_data field provided
|
|
by the kernel. Whitespace is not permitted.
|
|
.
|
|
.HP
|
|
.BR \-u | \-\-uuid
|
|
.br
|
|
Specify the uuid.
|
|
.
|
|
.HP
|
|
.BR \-v | \-\-verbose " [" \-v | \-\-verbose ]
|
|
.br
|
|
Produce additional output.
|
|
.
|
|
.SH COMMANDS
|
|
.
|
|
.HP
|
|
.CMD_CLEAR
|
|
.br
|
|
Instructs the kernel to clear statistics counters for the speficied
|
|
regions (with the exception of in-flight IO counters).
|
|
.
|
|
.HP
|
|
.CMD_CREATE
|
|
.br
|
|
Creates one or more new statistics regions on the specified device(s).
|
|
|
|
The region will span the entire device unless \fB\-\-start\fP and
|
|
\fB\-\-length\fP or \fB\-\-segments\fP are given. The \fB\-\-start\fP an
|
|
\fB\-\-length\fP options allow a region of arbitrary length to be placed
|
|
at an arbitrary offset into the device. The \fB\-\-segments\fP option
|
|
causes a new region to be created for each target in the corresponding
|
|
device-mapper device's table.
|
|
|
|
If the \fB\-\-precise\fP option is used the command will attempt to
|
|
create a region using nanosecond precision counters.
|
|
|
|
If \fB\-\-bounds\fP is given a latency histogram will be tracked for
|
|
the new region. The boundaries of the histogram bins are given as a
|
|
comma separated list of latency values. There is an implicit lower bound
|
|
of zero on the first bin and an implicit upper bound of infinity (or the
|
|
configured interval duration) on the final bin.
|
|
|
|
Latencies are given in nanoseconds. An optional unit suffix of ns, us,
|
|
ms, or s may be given after each value to specify units of nanoseconds,
|
|
microseconds, miliseconds or seconds respectively, so for example, 10ms
|
|
is equivalent to 10000000. Latency values with a precision of less than
|
|
one milisecond can only be used when precise timestamps are enabled: if
|
|
\fB\-\-precise\fP is not given and values less than one milisecond are
|
|
used it will be enabled automatically.
|
|
|
|
An optional \fBprogram_id\fP or \fBuser_data\fP string may be associated
|
|
with the region. A \fBprogram_id\fP may then be used to select regions
|
|
for subsequent list, print, and report operations. The \fBuser_data\fP
|
|
stores an arbitrary string and is not used by dmstats or the
|
|
device-mapper kernel statistics subsystem.
|
|
|
|
By default dmstats creates regions with a \fBprogram_id\fP of
|
|
"dmstats".
|
|
|
|
On success the \fBregion_id\fP of the newly created region is printed
|
|
to stdout.
|
|
|
|
If the \fB\-\-filemap\fP option is given with a regular file, or list
|
|
of files, as the \fBfile_path\fP argument, instead of creating regions
|
|
with parameters specified on the command line, \fBdmstats\fP will open
|
|
the files located at \fBfile_path\fP and create regions corresponding to
|
|
the physical extents allocated to the file. This can be used to monitor
|
|
statistics for individual files in the file system, for example, virtual
|
|
machine images, swap areas, or large database files.
|
|
|
|
To work with the \fB\-\-filemap\fP option, files must be located on a
|
|
local file system, backed by a device-mapper device, that supports
|
|
physical extent data using the FIEMAP ioctl (Ext4 and XFS for e.g.).
|
|
|
|
By default regions that map a file are placed into a group and the
|
|
group alias is set to the basename of the file. This behaviour can be
|
|
overridden with the \fB\-\-alias\fP and \fB\-\-nogroup\fP options.
|
|
|
|
Use the \fB\-\-group\fP option to only display information for groups
|
|
when listing and reporting.
|
|
.
|
|
.HP
|
|
.CMD_DELETE
|
|
.br
|
|
Delete the specified statistics region. All counters and resources used
|
|
by the region are released and the region will not appear in the output
|
|
of subsequent list, print, or report operations.
|
|
|
|
All regions registered on a device may be removed using
|
|
\fB\-\-allregions\fP.
|
|
|
|
To remove all regions on all devices both \fB\-\-allregions\fP and
|
|
\fB\-\-alldevices\fP must be used.
|
|
|
|
If a \fB\-\-groupid\fP is given instead of a \fB\-\-regionid\fP the
|
|
command will attempt to delete the group and all regions that it
|
|
contains.
|
|
|
|
If a deleted region is the first member of a group of regions the group
|
|
will also be removed.
|
|
.
|
|
.HP
|
|
.CMD_GROUP
|
|
.br
|
|
Combine one or more statistics regions on the specified device into a
|
|
group.
|
|
|
|
The list of regions to be grouped is specified with \fB\-\-regions\fP
|
|
and an optional alias may be assigned with \fB\-\-alias\fP. The set of
|
|
regions is given as a comma-separated list of region identifiers. A
|
|
continuous range of identifers spanning from \fBR1\fP to \fBR2\fP may
|
|
be expressed as '\fBR1\fP-\fBR2\fP'.
|
|
|
|
Regions that have a histogram configured can be grouped: in this case
|
|
the number of histogram bins and their bounds must match exactly.
|
|
|
|
On success the group list and newly created \fBgroup_id\fP are
|
|
printed to stdout.
|
|
|
|
The group metadata is stored with the first (lowest numbered)
|
|
\fBregion_id\fP in the group: deleting this region will also delete
|
|
the group and other group members will be returned to their prior
|
|
state.
|
|
.
|
|
.HP
|
|
.CMD_HELP
|
|
.br
|
|
Outputs a summary of the commands available, optionally including
|
|
the list of report fields.
|
|
.
|
|
.HP
|
|
.CMD_LIST
|
|
.br
|
|
List the statistics regions, areas, or groups registered on the device.
|
|
If the \fB\-\-allprograms\fP switch is given all regions will be listed
|
|
regardless of region program ID values.
|
|
|
|
By default only regions and groups are included in list output. If
|
|
\fB\-v\fP or \fB\-\-verbose\fP is given the report will also include a
|
|
row of information for each configured group and for each area contained
|
|
in each region displayed.
|
|
|
|
Regions that contain a single area are by default omitted from the
|
|
verbose list since their properties are identical to the area that they
|
|
contain - to view all regions regardless of the number of areas present
|
|
use \fB\-\-region\fP). To also view the areas contained within regions
|
|
use \fB\-\-area\fP.
|
|
|
|
If \fB\-\-histogram\fP is given the report will include the bin count
|
|
and latency boundary values for any configured histograms.
|
|
.HP
|
|
.CMD_PRINT
|
|
.br
|
|
Print raw statistics counters for the specified region or for all
|
|
present regions.
|
|
.
|
|
.HP
|
|
.CMD_REPORT
|
|
.br
|
|
Start a report for the specified object or for all present objects. If
|
|
the count argument is specified, the report will repeat at a fixed
|
|
interval set by the \fB\-\-interval\fP option. The default interval is
|
|
one second.
|
|
|
|
If the \fB\-\-allprograms\fP switch is given, all regions will be
|
|
listed, regardless of region program ID values.
|
|
|
|
If the \fB\-\-histogram\fP is given the report will include the histogram
|
|
values and latency boundaries.
|
|
|
|
If the \fB\-\-relative\fP is used the default histogram field displays
|
|
bin values as a percentage of the total number of I/Os.
|
|
|
|
Object types (areas, regions and groups) to include in the report are
|
|
selected using the \fB\-\-area\fP, \fB\-\-region\fP, and \fB\-\-group\fP
|
|
options.
|
|
.
|
|
.HP
|
|
.CMD_UNGROUP
|
|
.br
|
|
Remove an existing group and return all the group's regions to their
|
|
original state.
|
|
|
|
The group to be removed is specified using \fB\-\-groupid\fP.
|
|
.
|
|
.SH REGIONS, AREAS, AND GROUPS
|
|
.
|
|
The device-mapper statistics facility allows separate performance
|
|
counters to be maintained for arbitrary regions of devices. A region may
|
|
span any range: from a single sector to the whole device. A region may
|
|
be further sub-divided into a number of distinct areas (one or more),
|
|
each with its own counter set. In this case a summary value for the
|
|
entire region is also available for use in reports.
|
|
|
|
In addition, one or more regions on one device can be combined into
|
|
a statistics group. Groups allow several regions to be aggregated and
|
|
reported as a single entity; counters for all regions and areas are
|
|
summed and used to report totals for all group members. Groups also
|
|
permit the assignment of an optional alias, allowing meaningful names
|
|
to be associated with sets of regions.
|
|
|
|
The group metadata is stored with the first (lowest numbered)
|
|
\fBregion_id\fP in the group: deleting this region will also delete
|
|
the group and other group members will be returned to their prior
|
|
state.
|
|
|
|
By default new regions span the entire device. The \fB\-\-start\fP and
|
|
\fB\-\-length\fP options allows a region of any size to be placed at any
|
|
location on the device.
|
|
|
|
Using offsets it is possible to create regions that map individual
|
|
objects within a block device (for example: partitions, files in a file
|
|
system, or stripes or other structures in a RAID volume). Groups allow
|
|
several non-contiguous regions to be assembled together for reporting
|
|
and data aggregation.
|
|
|
|
A region may be either divided into the specified number of equal-sized
|
|
areas, or into areas of the given size by specifying one of
|
|
\fB\-\-areas\fP or \fB\-\-areasize\fP when creating a region with the
|
|
\fBcreate\fP command. Depending on the size of the areas and the device
|
|
region the final area within the region may be smaller than requested.
|
|
.P
|
|
.B Region identifiers
|
|
.P
|
|
Each region is assigned an identifier when it is created that is used to
|
|
reference the region in subsequent operations. Region identifiers are
|
|
unique within a given device (including across different \fBprogram_id\fP
|
|
values).
|
|
|
|
Depending on the sequence of create and delete operations, gaps may
|
|
exist in the sequence of \fBregion_id\fP values for a particular device.
|
|
|
|
The \fBregion_id\fP should be treated as an opaque identifier used to
|
|
reference the region.
|
|
.
|
|
.P
|
|
.B Group identifiers
|
|
.P
|
|
Groups are also assigned an integer identifier at creation time;
|
|
like region identifiers, group identifiers are unique within the
|
|
containing device.
|
|
|
|
The \fBgroup_id\fP should be treated as an opaque identifier used to
|
|
reference the group.
|
|
.
|
|
.SH REPORT FIELDS
|
|
.
|
|
The dmstats report provides several types of field that may be added to
|
|
the default field set, or used to create custom reports.
|
|
|
|
All performance counters and metrics are calculated per-area.
|
|
.
|
|
.SS Derived metrics
|
|
.
|
|
A number of metrics fields are included that provide high level
|
|
performance indicators. These are based on the fields provided by the
|
|
conventional Linux iostat program and are derived from the basic counter
|
|
values provided by the kernel for each area.
|
|
.TP
|
|
.B reads_merged_per_sec
|
|
Reads merged per second.
|
|
.TP
|
|
.B writes_merged_per_sec
|
|
Writes merged per second.
|
|
.TP
|
|
.B reads_per_sec
|
|
Reads completed per second.
|
|
.TP
|
|
.B writes_per_sec
|
|
Writes completed per second.
|
|
.TP
|
|
.B read_size_per_sec
|
|
Size of data read per second.
|
|
.TP
|
|
.B write_size_per_sec
|
|
Size of data written per second.
|
|
.TP
|
|
.B avg_request_size
|
|
Average request size.
|
|
.TP
|
|
.B queue_size
|
|
Average queue size.
|
|
.TP
|
|
.B await
|
|
The average wait time for read and write operations.
|
|
.TP
|
|
.B r_await
|
|
The average wait time for read operations.
|
|
.TP
|
|
.B w_await
|
|
The average wait time for write operations.
|
|
.TP
|
|
.B throughput
|
|
The device throughput in operations per second.
|
|
.TP
|
|
.B service_time
|
|
The average service time (in milliseconds) for operations issued
|
|
to the device.
|
|
.TP
|
|
.B util
|
|
Percentage of CPU time during which I/O requests were issued to the
|
|
device (bandwidth utilization for the device). Device saturation occurs
|
|
when this value is close to 100%.
|
|
.
|
|
.SS Group, region and area meta fields
|
|
.
|
|
Meta fields provide information about the groups, regions, or areas that
|
|
the statistics values relate to. This includes the region and area
|
|
identifier, start, length, and counts, as well as the program ID and
|
|
user data values.
|
|
.TP
|
|
.B region_id
|
|
Region identifier. This is a non-negative integer returned by the kernel
|
|
when a statistics region is created.
|
|
.TP
|
|
.B region_start
|
|
The region start location. Display units are selected by the
|
|
\fB\-\-units\fP option.
|
|
.TP
|
|
.B region_len
|
|
The length of the region. Display units are selected by the
|
|
\fB\-\-units\fP option.
|
|
.TP
|
|
.B area_id
|
|
Area identifier. Area identifiers are assigned by the device-mapper
|
|
statistics library and uniquely identify each area within a region. Each
|
|
ID corresponds to a distinct set of performance counters for that area
|
|
of the statistics region. Area identifiers are always monotonically
|
|
increasing within a region so that higher ID values correspond to
|
|
greater sector addresses within the area and no gaps in the sequence of
|
|
identifiers exist.
|
|
.TP
|
|
.B area_start
|
|
The area start location. Display units are selected by the
|
|
\fB\-\-units\fP option.
|
|
.TP
|
|
.B area_len
|
|
The length of the area. Display units are selected by the
|
|
\fB\-\-units\fP option.
|
|
.TP
|
|
.B area_count
|
|
The number of areas in this region.
|
|
.TP
|
|
.B program_id
|
|
The program ID value associated with this region.
|
|
.TP
|
|
.B user_data
|
|
The user data value associated with this region.
|
|
.TP
|
|
.B group_id
|
|
Group identifier. This is a non-negative integer returned by the dmstats
|
|
\fBgroup\fP command when a statistics group is created.
|
|
.TP
|
|
.B interval_ns
|
|
The estimated interval over which the current counter values have
|
|
accumulated. The value is reported as an interger expressed in units
|
|
of nanoseconds.
|
|
.TP
|
|
.B interval
|
|
The estimated interval over which the current counter values have
|
|
accumulated. The value is reported as a real number in units of
|
|
seconds.
|
|
.
|
|
.SS Basic counters
|
|
.
|
|
Basic counters provide access to the raw counter data from the kernel,
|
|
allowing further processing to be carried out by another program.
|
|
.P
|
|
The kernel provides thirteen separate counters for each statistics
|
|
area. The first eleven of these match the counters provided in
|
|
/proc/diskstats or /sys/block/*/*/stat. The final pair provide separate
|
|
counters for read and write time.
|
|
.TP
|
|
.B read_count
|
|
Count of reads completed this interval.
|
|
.TP
|
|
.B reads_merged_count
|
|
Count of reads merged this interval.
|
|
.TP
|
|
.B read_sector_count
|
|
Count of 512 byte sectors read this interval.
|
|
.TP
|
|
.B read_time
|
|
Accumulated duration of all read requests (ns).
|
|
.TP
|
|
.B write_count
|
|
Count of writes completed this interval.
|
|
.TP
|
|
.B writes_merged_count
|
|
Count of writes merged this interval.
|
|
.TP
|
|
.B write_sector_count
|
|
Count of 512 byte sectors written this interval.
|
|
.TP
|
|
.B write_nsecs
|
|
Accumulated duration of all write requests (ns).
|
|
.TP
|
|
.B in_progress_count
|
|
Count of requests currently in progress.
|
|
.TP
|
|
.B io_ticks
|
|
Nanoseconds spent servicing requests.
|
|
.TP
|
|
.B queue_ticks
|
|
This field is incremented at each I/O start, I/O completion, I/O merge,
|
|
or read of these stats by the number of I/Os in progress multiplied by
|
|
the number of milliseconds spent doing I/O since the last update of this
|
|
field. This can provide an easy measure of both I/O completion time and
|
|
the backlog that may be accumulating.
|
|
.TP
|
|
.B read_ticks
|
|
Nanoseconds spent servicing reads.
|
|
.TP
|
|
.B write_ticks
|
|
Nanoseconds spent servicing writes.
|
|
.
|
|
.SS Histogram fields
|
|
.
|
|
Histograms measure the frequency distribution of user specified I/O
|
|
latency intervals. Histogram bin boundaries are specified when a region
|
|
is created.
|
|
.P
|
|
A brief representation of the histogram values and latency intervals can
|
|
be included in the report using these fields.
|
|
.TP
|
|
.B hist_count
|
|
A list of the histogram counts for the current statistics area in order
|
|
of ascending latency value. Each value represents the number of I/Os
|
|
with latency times falling into that bin's time range during the sample
|
|
period.
|
|
.TP
|
|
.B hist_count_bounds
|
|
A list of the histogram counts for the current statistics area in order
|
|
of ascending latency value including bin boundaries: each count is
|
|
prefixed by the lower bound of the corresponding histogram bin.
|
|
.TP
|
|
.B hist_count_ranges
|
|
A list of the histogram counts for the current statistics area in order
|
|
of ascending latency value including bin boundaries: each count is
|
|
prefixed by both the lower and upper bounds of the corresponding
|
|
histogram bin.
|
|
.TP
|
|
.B hist_percent
|
|
A list of the relative histogram values for the current statistics area
|
|
in order of ascending latency value, expressed as a percentage. Each
|
|
value represents the proportion of I/Os with latency times falling into
|
|
that bin's time range during the sample period.
|
|
.TP
|
|
.B hist_percent_bounds
|
|
A list of the relative histogram values for the current statistics area
|
|
in order of ascending latency value, expressed as a percentage and
|
|
including bin boundaries. Each value represents the proportion of I/Os
|
|
with latency times falling into that bin's time range during the sample
|
|
period and is prefixed with the corresponding bin's lower bound.
|
|
.TP
|
|
.B hist_percent_ranges
|
|
A list of the relative histogram values for the current statistics area
|
|
in order of ascending latency value, expressed as a percentage and
|
|
including bin boundaries. Each value represents the proportion of I/Os
|
|
with latency times falling into that bin's time range during the sample
|
|
period and is prefixed with the corresponding bin's lower and upper
|
|
bounds.
|
|
.TP
|
|
.B hist_bounds
|
|
A list of the histogram boundary values for the current statistics area
|
|
in order of ascending latency value. The values are expressed in whole
|
|
units of seconds, miliseconds, microseconds or nanoseconds with a suffix
|
|
indicating the unit.
|
|
.TP
|
|
.B hist_ranges
|
|
A list of the histogram bin ranges for the current statistics area in
|
|
order of ascending latency value. The values are expressed as
|
|
"LOWER-UPPER" in whole units of seconds, miliseconds, microseconds or
|
|
nanoseconds with a suffix indicating the unit.
|
|
.TP
|
|
.B hist_bins
|
|
The number of latency histogram bins configured for the area.
|
|
.
|
|
.SH EXAMPLES
|
|
.
|
|
Create a whole-device region with one area on vg00/lvol1
|
|
.br
|
|
#
|
|
.B dmstats create vg00/lvol1
|
|
.br
|
|
vg00/lvol1: Created new region with 1 area(s) as region ID 0
|
|
.P
|
|
Create a 32M region 1G into device d0
|
|
.br
|
|
#
|
|
.B dmstats create \-\-start 1G \-\-length 32M d0
|
|
.br
|
|
d0: Created new region with 1 area(s) as region ID 0
|
|
.P
|
|
Create a whole-device region with 8 areas on every device
|
|
.br
|
|
.br
|
|
#
|
|
.B dmstats create \-\-areas 8
|
|
.br
|
|
vg00-lvol1: Created new region with 8 area(s) as region ID 0
|
|
.br
|
|
vg00-lvol2: Created new region with 8 area(s) as region ID 0
|
|
.br
|
|
vg00-lvol3: Created new region with 8 area(s) as region ID 0
|
|
.br
|
|
vg01-lvol0: Created new region with 8 area(s) as region ID 2
|
|
.br
|
|
vg01-lvol1: Created new region with 8 area(s) as region ID 0
|
|
.br
|
|
vg00-lvol2: Created new region with 8 area(s) as region ID 1
|
|
.P
|
|
Delete all regions on all devices
|
|
.br
|
|
.br
|
|
#
|
|
.B dmstats delete \-\-alldevices \-\-allregions
|
|
.P
|
|
Create a whole-device region with areas 10GiB in size on vg00/lvol1
|
|
using dmsetup
|
|
.br
|
|
.br
|
|
#
|
|
.B dmsetup stats create \-\-areasize 10G vg00/lvol1
|
|
.br
|
|
vg00-lvol1: Created new region with 5 area(s) as region ID 1
|
|
.P
|
|
Create a 1GiB region with 16 areas at the start of vg00/lvol1
|
|
.br
|
|
#
|
|
.B dmstats create \-\-start 0 \-\-len 1G \-\-areas=16 vg00/lvol1
|
|
.br
|
|
vg00-lvol1: Created new region with 16 area(s) as region ID 0
|
|
.P
|
|
List the statistics regions registered on vg00/lvol1
|
|
.br
|
|
#
|
|
.B dmstats list vg00/lvol1
|
|
.br
|
|
Name RgID RStart RSize #Areas ASize ProgID
|
|
.br
|
|
vg00-lvol1 0 0 61.00g 1 61.00g dmstats
|
|
.br
|
|
vg00-lvol1 1 61.00g 19.20g 1 19.20g dmstats
|
|
.br
|
|
vg00-lvol1 2 80.20g 2.14g 1 2.14g dmstats
|
|
.P
|
|
Display five statistics reports for vg00/lvol1 at an interval of one second
|
|
.br
|
|
.br
|
|
#
|
|
.B dmstats report \-\-interval 1 \-\-count 5 vg00/lvol1
|
|
.br
|
|
#
|
|
.B dmstats report
|
|
.br
|
|
Name RgID ArID AStart ASize RRqM/s WRqM/s R/s W/s RSz/s WSz/s AvRqSz QSize Util% AWait RdAWa WrAWa
|
|
.br
|
|
vg_hex-lv_home 0 0 0 61.00g 0.00 0.00 0.00 218.00 0 1.04m 4.50k 2.97 81.70 13.62 0.00 13.62
|
|
.br
|
|
vg_hex-lv_home 1 0 61.00g 19.20g 0.00 0.00 0.00 5.00 0 548.00k 109.50k 0.14 11.00 27.40 0.00 27.40
|
|
.br
|
|
vg_hex-lv_home 2 0 80.20g 2.14g 0.00 0.00 0.00 14.00 0 1.15m 84.00k 0.39 18.70 27.71 0.00 27.71
|
|
.P
|
|
Create one region for reach target contained in device vg00/lvol1
|
|
.br
|
|
.br
|
|
#
|
|
.B dmstats create \-\-segments vg00/lvol1
|
|
.br
|
|
vg00-lvol1: Created new region with 1 area(s) as region ID 0
|
|
.br
|
|
vg00-lvol1: Created new region with 1 area(s) as region ID 1
|
|
.br
|
|
vg00-lvol1: Created new region with 1 area(s) as region ID 2
|
|
.P
|
|
Create regions mapping each file in the directory images/ and place
|
|
them into separate groups, each named after the corresponding file
|
|
.br
|
|
#
|
|
.B dmstats create --filemap images/*
|
|
.br
|
|
images/vm1.qcow2: Created new group with 87 region(s) as group ID 0.
|
|
.br
|
|
images/vm1-1.qcow2: Created new group with 8 region(s) as group ID 87.
|
|
.br
|
|
images/vm2.qcow2: Created new group with 11 region(s) as group ID 95.
|
|
.br
|
|
images/vm2-1.qcow2: Created new group with 1454 region(s) as group ID 106.
|
|
.br
|
|
images/vm3.img: Created new group with 2 region(s) as group ID 1560.
|
|
.P
|
|
Print raw counters for region 4 on device d0
|
|
.br
|
|
#
|
|
.B dmstats print \-\-regionid 4 d0
|
|
.br
|
|
2097152+65536 0 0 0 0 29 0 264 701 0 41 701 0 41
|
|
.
|
|
.SH AUTHORS
|
|
.
|
|
Bryn M. Reeves <bmr@redhat.com>
|
|
.
|
|
.SH SEE ALSO
|
|
.
|
|
.BR dmsetup (8)
|
|
|
|
LVM2 resource page: https://www.sourceware.org/lvm2/
|
|
.br
|
|
Device-mapper resource page: http://sources.redhat.com/dm/
|
|
.br
|
|
|
|
Device-mapper statistics kernel documentation
|
|
.br
|
|
.I Documentation/device-mapper/statistics.txt
|