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