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 <[email protected]> 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

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to