diff -upr sysstat-10.1.2.orig/iostat.c sysstat-10.1.2/iostat.c --- sysstat-10.1.2.orig/iostat.c 2012-10-03 21:18:22.000000000 +0200 +++ sysstat-10.1.2/iostat.c 2012-11-22 16:24:38.860140304 +0100 @@ -85,13 +85,13 @@ void usage(char *progname) progname); #ifdef DEBUG fprintf(stderr, _("Options are:\n" - "[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -z ]\n" + "[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n" "[ -j { ID | LABEL | PATH | UUID | ... } ]\n" "[ [ -T ] -g ] [ -p [ [,...] | ALL ] ]\n" "[ [...] | ALL ] [ --debuginfo ]\n")); #else fprintf(stderr, _("Options are:\n" - "[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -z ]\n" + "[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n" "[ -j { ID | LABEL | PATH | UUID | ... } ]\n" "[ [ -T ] -g ] [ -p [ [,...] | ALL ] ]\n" "[ [...] | ALL ]\n")); @@ -1205,6 +1205,12 @@ void write_stats(int curr, struct tm *re void rw_io_stat_loop(long int count, struct tm *rectime) { int curr = 1; + int skip = 0; + + /* Should we skip first report? */ + if (DISPLAY_OMIT_SINCE_BOOT(flags) && interval > 0) { + skip = 1; + } /* Don't buffer data if redirected to a pipe */ setbuf(stdout, NULL); @@ -1261,12 +1267,18 @@ void rw_io_stat_loop(long int count, str /* Get time */ get_localtime(rectime, 0); - /* Print results */ - write_stats(curr, rectime); + /* Check whether we should skip first report */ + if (!skip) { + /* Print results */ + write_stats(curr, rectime); - if (count > 0) { - count--; + if (count > 0) { + count--; + } + } else { + skip = 0; } + if (count) { curr ^= 1; pause(); @@ -1458,7 +1470,12 @@ int main(int argc, char **argv) /* Display extended stats */ flags |= I_D_EXTENDED; break; - + + case 'y': + /* Omit first since boot stats */ + flags |= I_D_OMIT_SINCE_BOOT; + break; + case 'z': /* Omit output for devices with no activity */ flags |= I_D_ZERO_OMIT; diff -upr sysstat-10.1.2.orig/iostat.h sysstat-10.1.2/iostat.h --- sysstat-10.1.2.orig/iostat.h 2012-10-03 21:18:22.000000000 +0200 +++ sysstat-10.1.2/iostat.h 2012-11-22 16:09:53.136250283 +0100 @@ -23,7 +23,7 @@ #define I_F_HAS_DISKSTATS 0x00800 #define I_D_HUMAN_READ 0x01000 #define I_D_PERSIST_NAME 0x02000 -/* Unused 0x04000 */ +#define I_D_OMIT_SINCE_BOOT 0x04000 /* Unused 0x08000 */ #define I_D_DEVMAP_NAME 0x10000 #define I_D_ISO 0x20000 @@ -44,6 +44,7 @@ #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_PERSIST_NAME_I(m) (((m) & I_D_PERSIST_NAME) == I_D_PERSIST_NAME) +#define DISPLAY_OMIT_SINCE_BOOT(m) (((m) & I_D_OMIT_SINCE_BOOT) == I_D_OMIT_SINCE_BOOT) #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_GROUP_TOTAL_ONLY(m) (((m) & I_D_GROUP_TOTAL_ONLY) == I_D_GROUP_TOTAL_ONLY) diff -upr sysstat-10.1.2.orig/man/iostat.in sysstat-10.1.2/man/iostat.in --- sysstat-10.1.2.orig/man/iostat.in 2012-07-13 21:40:54.000000000 +0200 +++ sysstat-10.1.2/man/iostat.in 2012-11-22 17:53:57.961559688 +0100 @@ -4,7 +4,7 @@ iostat \- Report Central Processing Unit statistics for devices and partitions. .SH SYNOPSIS .ie 'yes'@WITH_DEBUG@' \{ -.B iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -z ] +.B iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] .B [ -j { ID | LABEL | PATH | UUID | ... } ] .B [ [ -T ] -g .I group_name @@ -19,7 +19,7 @@ statistics for devices and partitions. .B ] ] .\} .el \{ -.B iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -z ] +.B iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] .B [ -j { ID | LABEL | PATH | UUID | ... } ] .B [ [ -T ] -g .I group_name @@ -47,7 +47,9 @@ the input/output load between physical d The first report generated by the .B iostat command provides statistics -concerning the time since the system was booted. Each subsequent report +concerning the time since the system was booted, unless the +.B -y +option is used, when this first report is omitted. Each subsequent report covers the time since the previous report. All statistics are reported each time the iostat command is run. The report consists of a CPU header row followed by a row of @@ -60,7 +62,10 @@ The .I interval parameter specifies the amount of time in seconds between each report. The first report contains statistics for the time since -system startup (boot). Each subsequent report contains statistics +system startup (boot), unless the +.B -y +option is used, when this report is omitted. +Each subsequent report contains statistics collected during the interval since the previous report. The .I count parameter can be specified in conjunction with the @@ -326,6 +331,9 @@ on the value of the S_TIME_FORMAT enviro Print version number then exit. .IP -x Display extended statistics. +.IP -y +Omit first report with statistics since the system boot, if displaying multiple +records in given interval. .IP -z Tell iostat to omit output for any devices for which there was no activity during the sample period.