PSARC-- I made a grave error in filing this case, which is that I forgot
to update the IAM file to change the state of the case to Waiting Fast
Track after I mailed the proposal out to the case.  As a result this
case was not considered yesterday at ARC business.  This was a careless
oversight on my part and should in no way reflects on the author of this
case, Chad Mynhier.

I have apologized to Chad, and I would appreciate it very much if the
ARC would allow me to set the timer to tomorrow, Friday, Feb 27 2009, at
close-of-business pacific time.  In this way we can avoid further delay.
This case has thus far been non-controversial.

I have altered the IAM file to set the timer to tomorrow; please
let us know if this is not acceptable.

Thanks.  Again, please accept my apologies.

        -dp

On Sat 14 Feb 2009 at 08:35PM, Dan Price wrote:
> 
> I'm pleased to sponsor the following fast-track for Chad Mynhier.
> Chad is enhancing some of the various "stat" commands to support
> a time stamp option in keeping with a similar option provided by
> iostat(1m).  This case also defines a uniform specification for
> this option which future cases can reference in order to add
> timestamp options to other "stat" commands.
> 
> For those who use the *stat commands to do monitoring over long
> periods of time, this will be a welcome addition.
> 
> Please ensure that you CC Chad on all correspondance.
> 
>         -dp
> 
> ---------------------------------------------------------------------------
> Time stamp option for xxstat commands
> Chad Mynhier <cmynhier at gmail.com>
> 
> SUMMARY
>       This fast-track enhances the mpstat(1M), vmstat(1M), and
>       prstat(1M) commands to address an existing RFE[1] requesting an
>       option for each of these commands to emit a time stamp.  In
>       addition, this fast-track enhances the existing time stamp
>       functionality in iostat(1M) to print a locale-specific time
>       stamp, if the standard date format is requested.
> 
>       This fast-track also sets a precedent that all "*stat" commands
>       that print statistics at a regular interval should implement a
>       timestamp feature similar to the one described here.
> 
> DETAILS
> 
>     Overview
> 
>       Currently, the iostat(1M) and fsstat(1M) commands provide an
>       option to print a time stamp in either standard date format or
>       traditional Unix time for each set of data.  For example:
> 
> # iostat -T d 1
> Sat Jan 24 12:34:34 2009
>    tty        sd0           sd1           sd2            cpu
>  tin tout kps tps serv  kps tps serv  kps tps serv   us sy wt id
>    0    8  39   1   24   39   1   22    0   0    0    1  1  0 98
> Sat Jan 24 12:34:35 2009
>    0  220   0   0    0    0   0    0    0   0    0    0  1  0 99
> Sat Jan 24 12:34:36 2009
>    0   92   0   0    0    0   0    0    0   0    0    0  1  0 99
> ^C# 
> # 
> # fsstat -T u tmpfs 1
>  new  name   name  attr  attr lookup rddir  read read  write write
>  file remov  chng   get   set    ops   ops   ops bytes   ops bytes
> 2.57M 1.63M 25.9K 36.3M 70.8K  26.1M 4.67K  118M  464G 65.8M  253G tmpfs
> 1232818548
>     0     0     0     0     0      0     0     0     0     0     0 tmpfs
> 1232818549
>     0     0     0     0     0      0     0     0     0     0     0 tmpfs
> 1232818550
>     0     0     0     0     0      0     0     0     0     0     0 tmpfs
> ^C# 
> 
>       The mpstat(1M), vmstat(1M), and prstat(1M) commands do not
>       provide such an option.  This option is useful when gathering
>       data to correlate with a transient system or application
>       problem whose time is known after the fact.  While this problem
>       can be worked around by wrapping the command in a script that
>       adds a time stamp to the output, it would be better to provide
>       consistency with iostat(1M) and fsstat(1M).
> 
>       Additionally, the time stamp currently emitted by iostat(1M) is
>       printed unconditionally in the format specified by the C
>       locale.  For example:
> 
> # locale
> LANG=
> LC_CTYPE="C"
> LC_NUMERIC="C"
> LC_TIME=fr
> LC_COLLATE="C"
> LC_MONETARY="C"
> LC_MESSAGES="C"
> LC_ALL=
> # iostat -T d 3
> Mon Jan 26 12:03:42 2009
>    tty        sd0           sd1           sd2            cpu
>  tin tout kps tps serv  kps tps serv  kps tps serv   us sy wt id
>    0    8  43   1   24   43   1   22    0   0    0    1  1  0 98
> Mon Jan 26 12:03:45 2009
>    0   73   0   0    0    0   0    0    0   0    0    0  0  0 99
> ^C# 
> 
>       We plan to address these issues as follows:
> 
>       1. We will add the "[-T d | u]" option to vmstat(1M) and mpstat(1M)
>          to mirror that option in iostat(1M) and fsstat(1M).
> 
>       2. We will add the the "[-d d | u]" option to prstat(1M) to print a 
>          time stamp.
> 
>       3.  We will modify iostat(1M) to print the time stamp in a
>           locale-specific format (i.e., printing local time using
>           strftime(3C) with the correct format string for the locale.)
> 
>       There are two possible options for the placement of the
>       time stamp in the output.  The first option is to emit the
>       time stamp on a separate line prior to each set of data.  The
>       second option is to print the time stamp as an additional column
>       in the output.  We choose the first option for two reasons.
>       The first of these is that there is a precedent in how
>       iostat(1M) and fsstat(1M) output the time stamp, as shown
>       above.  The second is that the time stamp would consume a large
>       number of columns, and these utilities are designed (for the
>       most part) to fit in 80 columns.
> 
>       Because the output of mpstat(1M) and prstat(1M) typically
>       includes multiple rows, we also have the option of printing one
>       time stamp per row.  We choose instead to print one time stamp
>       per sampling period.  This follows the precedent set by
>       iostat(1M), and it allows the most data to be printed on a
>       single screen.  Note that this also applies to those modes of
>       prstat(1M) that involve printing two separate sets of data,
>       such as per-process and per-zone statistics.  Only one
>       time stamp is shown in these cases.
> 
>       It could be argued that the time stamp option only makes sense
>       in conjunction with the "-c" option of prstat(1M), given that
>       otherwise the time stamp is overwritten with each sample.  For
>       the sake of completeness, however, we propose implementing the
>       time stamp option as an independent option that can be used in
>       either mode.
> 
> EXAMPLE
> 
>       This example shows mpstat(1M) output using a standard date
>       format time stamp:
> 
> # ./mpstat -T d 1
> Sat Jan 24 13:14:59 2009
> CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
>   0  201   0   77  2219  127   87    3    2   14    1   241    1   1   0  98
>   1  209   0   73   173   26   92    3    2   15    1   246    1   1   0  98
>   2  203   0  105   165   24   94    2    2   14    1   240    1   1   0  98
>   3  207   0   73   177   25   97    3    2   14    1   243    1   1   0  98
> Sat Jan 24 13:15:00 2009
> CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
>   0 18387   0 3246 10899  111  455  222   82  518   79 17262   71  29   0   0
>   1 24517   0 3635  8790    9  482  210   66  624   86 22727   63  37   0   0
>   2 20614   0 8964  7016   75  460  189   68  573   83 17889   61  39   0   0
>   3 23650   0 13319  5535   21  442  186   69  546   75 17211   64  36   0   0
> Sat Jan 24 13:15:01 2009
> CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
>   0 21763   0 4950 13096  130  491  187   89  521   46 15574   62  38   0   0
>   1 19702   0 12835  8601   48  478  219   86  482   76 16697   64  36   0   0
>   2 16842   0 11385  9045   62  396  195   69  418   62 14106   74  26   0   0
>   3 29149   0 8459 10058   18  538  216   85  665  103 24843   55  45   0   0
> Sat Jan 24 13:15:02 2009
> CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
>   0 27958   0 10245 21765  125  657  212  127  817  144 21165   46  52   0   3
>   1 26394   0 8131 20657   28  703  196  118  847  142 19734   45  52   0   3
>   2 26998   0 44518  8242  114  478  174  106  778  100 17544   38  61   0   1
>   3 16175   0 4904 20502   33  553  140  115  506   55 14710   54  38   0   8
> ^C# 
> 
> 
>       This example shows vmstat(1M) output using a traditional Unix
>       time stamp:
> 
> # ./vmstat -T u 1
>  kthr      memory            page            disk          faults      cpu
>  r b w   swap  free  re  mf pi po fr de sr f0 s0 s1 s2   in   sy   cs us sy id
> 1232820946
>  0 0 0 3666444 2642924 59 824 0 0  0  0  4  0  1  1 -1 2735  974  370  1  1 98
> 1232820947
>  5 0 0 2521192 1540320 5071 92284 0 0 0 0 0 0 22 20  0 54794 83465 1661 63 37 > 0
> 1232820948
>  4 0 0 2495436 1511176 5642 87339 0 0 0 0 0 0 28 28  0 39021 59198 1570 67 33 > 0
> 1232820949
>  3 0 0 2525936 1545120 5767 81687 0 0 0 0 0 0 20 20  0 31799 60757 1697 69 31 > 0
> ^C# 
> 
> 
>       This example shows prstat(1M) output using a standard date
>       format time stamp (with the -c option):
> 
> # amd64/prstat -c -d d -n 5 1
> Sat Jan 24 13:17:42 2009
>    PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP       
>   6920 mynhier  5760K 4664K sleep    0    4   0:00:00 0.5% dmake/1
>  13928 mynhier    25M   24M sleep    0    4   0:00:00 0.3% dmake/1
>   9229 mynhier    21M   17M cpu3     0    4   0:00:00 0.3% dmake/1
>   1504 noaccess  101M   76M sleep   59    0   0:43:09 0.0% java/18
>   9315 root     3772K 2568K cpu1    39    0   0:00:00 0.0% prstat/1
> Total: 95 processes, 256 lwps, load averages: 6.93, 4.99, 2.46
> Sat Jan 24 13:17:43 2009
>    PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP       
>   6920 mynhier  5840K 4748K sleep    0    4   0:00:00 0.5% dmake/1
>   9229 mynhier    22M   21M sleep   38    4   0:00:00 0.4% dmake/1
>   9528 mynhier    15M   12M run      0    4   0:00:00 0.4% acomp/1
>   9430 mynhier    10M 9628K sleep    0    4   0:00:00 0.4% dmake/1
>  13928 mynhier    25M   24M sleep   38    4   0:00:00 0.3% dmake/1
> Total: 114 processes, 274 lwps, load averages: 6.91, 4.99, 2.47
> # 
> 
>       This example shows a screenshot of the above command without
>       the -c option.  (There's little difference to be seen between
>       the previous example and this one, but this one is included in
>       order to explicitly show the placement of the time stamp in
>       this mode.):
> 
> Sat Jan 24 13:20:25 2009
>    PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP       
>   4992 mynhier    29M   26M cpu2     0    4   0:00:00 1.1% ube/1
>    537 mynhier    13M   12M sleep   39    4   0:00:01 1.1% dmake/1
>   5045 mynhier    45M   41M run      0    4   0:00:00 0.4% ube/1
>   5145 mynhier    21M   12M run      0    4   0:00:00 0.1% iropt/1
>    386 mynhier    30M   29M sleep   47    4   0:00:00 0.1% dmake/1
> Total: 144 processes, 302 lwps, load averages: 6.76, 5.72, 3.17
> 
>       This example shows iostat(1M) output using the French locale:
> 
> # ./iostat -T d 3
> lundi 26 janvier 2009 12 h 08 EST
>    tty        sd0           sd1           sd2            cpu
>  tin tout kps tps serv  kps tps serv  kps tps serv   us sy wt id
>    0    8  43   1   24   43   1   22    0   0    0    1  1  0 98
> lundi 26 janvier 2009 12 h 08 EST
>    0   76   0   0    0    0   0    0    0   0    0    0  0  0 100
> ^C# 
> 
> DOCUMENTATION
> 
>       This fast-track proposes adding the following text to the man
>       pages for mpstat(1M), vmstat(1M), and prstat(1M), with the
>       exception that the prstat(1M) shall be listed as "-d":
> 
>       -T u | d
>               Emit a time stamp.
> 
>               Specify u for a printed representation of the internal
>               representation  of  time.  See time(2).  Specify d for
>               standard date format. See date(1).
> 
>       Additionally, the option should be added to the SYNOPSIS
>       section of the man pages for each of these.
> 
>       (The iostat(1M) man page should be changed to read, "See
>       date(1)."  rather than "See ctime(3C)." to reflect the
>       localization change.)
> 
> REFERENCES
> 
> [1] would like a timestamp option like iostat has added to mpstat, vmstat
>     and prstat
>     (http://bugs.opensolaris.org/view_bug.do?bug_id=4775687)
> ---------------------------------------------------------------------------
> 
> -- 
> Daniel Price, Solaris Kernel Engineering    http://blogs.sun.com/dp

-- 
Daniel Price, Solaris Kernel Engineering    http://blogs.sun.com/dp

Reply via email to