svn commit: r244271 - head/usr.sbin/iostat
Robert Watson
rwatson at FreeBSD.org
Mon Dec 17 11:47:41 UTC 2012
On Sat, 15 Dec 2012, Adrian Chadd wrote:
> People may have scripts based on the current output.
>
> You should have introduced a new parameter which modifies the output
> behaviour in the way you wanted, rather than modifying the existing
> behaviour.
>
> Please consider reverting your change (which is a good idea, btw) and adding
> a new modifier that outputs the value(s), rather than a %age.
<pipedream>
I would really like all of our monitoring commands -- netstat, iostat, vmstat,
... to support a machine-readable output mode, in which they encode their
output using XML (or something) that can be used by scripts. This could then,
perhaps, be combined with a new command-line tool that can be used to extract
(e.g.,) named values for specific devices, PIDs, etc. That would make
continued updates to human-readable output more palettable.
</pipedream>
Robert
>
> Adrian
>
>
> On 15 December 2012 10:21, Mikolaj Golub <trociny at freebsd.org> wrote:
>> Author: trociny
>> Date: Sat Dec 15 18:21:09 2012
>> New Revision: 244271
>> URL: http://svnweb.freebsd.org/changeset/base/244271
>>
>> Log:
>> Change `iostat -Ix` to display total duration of transactions instead
>> of average duration, and total busy time instead of %.
>>
>> This looks more useful when one runs `iostat -Ix` periodically to
>> collect statistics: e.g. now it is possible to calculate busy %
>> between two runs subtracting total busy times and dividing per time
>> period.
>>
>> Average duration and % busy are still available via `iostat -x`.
>>
>> Modified:
>> head/usr.sbin/iostat/iostat.8
>> head/usr.sbin/iostat/iostat.c
>>
>> Modified: head/usr.sbin/iostat/iostat.8
>> ==============================================================================
>> --- head/usr.sbin/iostat/iostat.8 Sat Dec 15 18:19:48 2012 (r244270)
>> +++ head/usr.sbin/iostat/iostat.8 Sat Dec 15 18:21:09 2012 (r244271)
>> @@ -56,7 +56,7 @@
>> .\"
>> .\" @(#)iostat.8 8.1 (Berkeley) 6/6/93
>> .\"
>> -.Dd November 24, 2010
>> +.Dd December 15, 2012
>> .Dt IOSTAT 8
>> .Os
>> .Sh NAME
>> @@ -366,6 +366,32 @@ average duration of transactions, in mil
>> % of time the device had one or more outstanding transactions
>> .El
>> .Pp
>> +The extended
>> +.Nm
>> +device display, with the
>> +.Fl x
>> +and
>> +.Fl I
>> +flags specified, shows the following statistics:
>> +.Pp
>> +.Bl -tag -width indent -compact
>> +.It r/i
>> +read operations per time period
>> +.It w/i
>> +write operations per time period
>> +.It kr/i
>> +kilobytes read per time period
>> +.It kw/i
>> +kilobytes write per time period
>> +.It qlen
>> +transactions queue length
>> +.It tsvc_t/i
>> +total duration of transactions per time period, in seconds
>> +.It sb/i
>> +total time the device had one or more outstanding transactions per
>> +time period, in seconds
>> +.El
>> +.Pp
>> The old-style
>> .Nm
>> display (using
>>
>> Modified: head/usr.sbin/iostat/iostat.c
>> ==============================================================================
>> --- head/usr.sbin/iostat/iostat.c Sat Dec 15 18:19:48 2012 (r244270)
>> +++ head/usr.sbin/iostat/iostat.c Sat Dec 15 18:21:09 2012 (r244271)
>> @@ -731,10 +731,10 @@ devstats(int perf_select, long double et
>> u_int64_t total_bytes, total_transfers, total_blocks;
>> u_int64_t total_bytes_read, total_transfers_read;
>> u_int64_t total_bytes_write, total_transfers_write;
>> - long double busy_pct;
>> + long double busy_pct, busy_time;
>> u_int64_t queue_len;
>> long double total_mb;
>> - long double blocks_per_second, ms_per_transaction;
>> + long double blocks_per_second, ms_per_transaction, total_duration;
>> int firstline = 1;
>> char *devname;
>>
>> @@ -745,14 +745,13 @@ devstats(int perf_select, long double et
>> if (Cflag > 0)
>> printf(" cpu ");
>> printf("\n");
>> - if (Iflag == 0)
>> - printf(
>> - "device r/s w/s kr/s kw/s qlen svc_t %%b "
>> - );
>> - else
>> - printf(
>> - "device r/i w/i kr/i kw/i qlen svc_t %%b "
>> - );
>> + if (Iflag == 0) {
>> + printf("device r/s w/s kr/s kw/s qlen "
>> + "svc_t %%b ");
>> + } else {
>> + printf("device r/i w/i kr/i"
>> + " kw/i qlen tsvc_t/i sb/i ");
>> + }
>> if (Tflag > 0)
>> printf("tin tout ");
>> if (Cflag > 0)
>> @@ -789,6 +788,8 @@ devstats(int perf_select, long double et
>> DSM_MS_PER_TRANSACTION, &ms_per_transaction,
>> DSM_BUSY_PCT, &busy_pct,
>> DSM_QUEUE_LENGTH, &queue_len,
>> + DSM_TOTAL_DURATION, &total_duration,
>> + DSM_TOTAL_BUSY_TIME, &busy_time,
>> DSM_NONE) != 0)
>> errx(1, "%s", devstat_errbuf);
>>
>> @@ -827,7 +828,9 @@ devstats(int perf_select, long double et
>> queue_len,
>> ms_per_transaction, busy_pct);
>> else
>> - printf("%-8.8s %5.1Lf %5.1Lf %7.1Lf %7.1Lf %4" PRIu64 " %5.1Lf %3.0Lf ",
>> + printf("%-8.8s %11.1Lf %11.1Lf "
>> + "%12.1Lf %12.1Lf %4" PRIu64
>> + " %10.1Lf %9.1Lf ",
>> devname,
>> (long double)total_transfers_read,
>> (long double)total_transfers_write,
>> @@ -836,7 +839,7 @@ devstats(int perf_select, long double et
>> (long double)
>> total_bytes_write / 1024,
>> queue_len,
>> - ms_per_transaction, busy_pct);
>> + total_duration, busy_time);
>> if (firstline) {
>> /*
>> * If this is the first device
>
More information about the svn-src-head
mailing list