progname);
#ifdef DEBUG
fprintf(stderr, _("Options are:\n"
- "[ -c ] [ -d ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ]\n"
+ "[ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ]\n"
"[ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ] [ --debuginfo ]\n"));
#else
fprintf(stderr, _("Options are:\n"
- "[ -c ] [ -d ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ]\n"
+ "[ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ]\n"
"[ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ]\n"));
#endif
exit(1);
(ioi->wr_ticks - ioj->wr_ticks) /
((double) (ioi->wr_ios - ioj->wr_ios)) : 0.0;
- /* DEV rrq/s wrq/s r/s w/s rsec wsec rqsz qusz await r_await w_await svctm %util */
- printf("%-13s %8.2f %8.2f %7.2f %7.2f %8.2f %8.2f %8.2f %8.2f %7.2f %7.2f %7.2f %6.2f %6.2f\n",
- shi->name,
+ /* Print device name */
+ if (DISPLAY_HUMAN_READ(flags)) {
+ printf("%s\n%13s", shi->name, "");
+ }
+ else {
+ printf("%-13s", shi->name);
+ }
+
+ /* rrq/s wrq/s r/s w/s rsec wsec rqsz qusz await r_await w_await svctm %util */
+ printf(" %8.2f %8.2f %7.2f %7.2f %8.2f %8.2f %8.2f %8.2f %7.2f %7.2f %7.2f %6.2f %6.2f\n",
S_VALUE(ioj->rd_merges, ioi->rd_merges, itv),
S_VALUE(ioj->wr_merges, ioi->wr_merges, itv),
S_VALUE(ioj->rd_ios, ioi->rd_ios, itv),
{
unsigned long long rd_sec, wr_sec;
- printf("%-13s", shi->name);
+ /* Print device name */
+ if (DISPLAY_HUMAN_READ(flags)) {
+ printf("%s\n%13s", shi->name, "");
+ }
+ else {
+ printf("%-13s", shi->name);
+ }
/* Print stats coming from /sys or /proc/diskstats */
rd_sec = ioi->rd_sectors - ioj->rd_sectors;
flags |= I_D_DISK;
report_set = TRUE;
break;
+
+ case 'h':
+ /*
+ * Display device utilization report
+ * in a human readable format.
+ */
+ flags |= I_D_HUMAN_READ;
+ break;
case 'k':
if (DISPLAY_MEGABYTES(flags)) {
#define I_D_MEGABYTES 0x00200
#define I_D_PARTITIONS 0x00400
#define I_F_HAS_DISKSTATS 0x00800
-/* Unused 0x01000 */
+#define I_D_HUMAN_READ 0x01000
/* Unused 0x02000 */
/* Unused 0x04000 */
/* Unused 0x08000 */
#define DISPLAY_UNFILTERED(m) (((m) & I_D_UNFILTERED) == I_D_UNFILTERED)
#define DISPLAY_PARTITIONS(m) (((m) & I_D_PARTITIONS) == I_D_PARTITIONS)
#define HAS_DISKSTATS(m) (((m) & I_F_HAS_DISKSTATS) == I_F_HAS_DISKSTATS)
+#define DISPLAY_HUMAN_READ(m) (((m) & I_D_HUMAN_READ) == I_D_HUMAN_READ)
#define DISPLAY_DEVMAP_NAME(m) (((m) & I_D_DEVMAP_NAME) == I_D_DEVMAP_NAME)
#define DISPLAY_ISO(m) (((m) & I_D_ISO) == I_D_ISO)
#define DISPLAY_ZERO_OMIT(m) (((m) & I_D_ZERO_OMIT) == I_D_ZERO_OMIT)
-.TH IOSTAT 1 "JUNE 2010" Linux "Linux User's Manual" -*- nroff -*-
+.TH IOSTAT 1 "MAY 2011" Linux "Linux User's Manual" -*- nroff -*-
.SH NAME
iostat \- Report Central Processing Unit (CPU) statistics and input/output
statistics for devices and partitions.
.SH SYNOPSIS
.ie 'yes'@WITH_DEBUG@' \{
-.B iostat [ -c ] [ -d ] [ --debuginfo ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [
+.B iostat [ -c ] [ -d ] [ --debuginfo ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [
.I device
.B [...] | ALL ] [ -p [
.I device
.B ] ]
.\}
.el \{
-.B iostat [ -c ] [ -d ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [
+.B iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [
.I device
.B [...] | ALL ] [ -p [
.I device
.IP --debuginfo
Print debug output to stderr.
.\}
+.IP -h
+Make the Device Utilization Report easier to read by a human.
.IP -k
Display statistics in kilobytes per second.
.IP -m