which have not (yet) been touched (-xD needs *serious* improvements).
While this still has no run-time configurability, it is now easy to
adjust the column widths in the source and recompile. Dynamic (auto)
column width sizing is probably out of the question (requires predicting
the future) but options to allow the widths to be set isn't out of the
question.
The columns are now (mostly) considerably wider than they were before,
hence wider windows are needed to view the same info. In an 80
column window the default display (with tty & cpu included) displays
just 2 drives. 160 columns will fit 7 (but with -I, just 4).
One new option added (-z) suppresses output which is true 0 (but still
prints 0 for values rounded down to 0) for everything except tty stats.
For drive output, the drive must have done nothing during the interval
to get its output data blanked.
Also options -H h -W w to set the output size (page height & width), the
former used to decide when to print headers, and the latter to calculate
the number of drives to print when no drive names were given. Env vars
LINES and COLUMNS are used if the options are not given, with fallback
to the terminal size (if output is to a terminal, and its sizes are
known), and if all else fails, 20 lines, 80 columns. Specifying 0
means unlimited (infinite). So "iostat -W 0" will show all of the
drives, across one (often very) long line. Wedges count as drives.
When drives are specified, the output will now appear in the order they were
given on the command line, rather than the order the system discovered them
during auto-configuration. If specified as an fnmatch(3) pattern, drives that
match will appear in auto-conf order, but that's generally what is wanted.
When none are specified, you still get the first N (however many fits based
upon the options selected) in auto-conf order (usually useless, more so now
given that less will fit).
Lastly, for those who looked at the patch I sent to current-users@
and were horrified at how kludgey it was, rest assured, that was just
a quick hack to demonstrate what the output format changes would look
like. This version (I hope) is not nearly so disgusting.
doesn't repeat the processing every iteration. Repeatedly seeing the wait
interval does no harm, but setting the iteration count (reps) over and
over again rather defeats its purpose.
- the header is only 1 line not 2, account for this when calculating
when to display the next header.
- when ndrives > 1, don't display the header every time, but only when
the previous one disappears.
now i don't feel the need to run "iostat -x wd0 1 & iostat -c wd1 1"
to get less repeated header output on my display.
Disk statistics are collected in a fixed size array, that got corrupted
when a disk was detached. Adapt by skipping entries of detached disks
and detect reused disknames at the array end.
by the number of concurrent I/O requests. Also introduce a new disk_wait()
function to measure requests waiting in a bufq.
iostat -y now reports data about waiting and active requests.
So far only drivers using dksubr and dk, ccd, wd and xbd collect data about
waiting requests.
function (tkswap()), actually call this function.
Fixes problems where the tin/tout fields showed total tty IO since
boot instead of just what has happened in the last second.
and more) and use a little sig_header() helper.
- in selectdrives() make sure we don't overwrite some arrays. this makes
"iostat 1" work again on my really wide screens where defdrives (number that
can fit) was > ndrives (number of drives), rather than dump core trying to
print (char *)1...
frequently enough.
- As we are initializing dk_select to 0 (via dkinit), no need to check it.
- Re-order the code in display() to highlight the fact that -x is
exclusive with others.
- If user really specified some drives and none of them are found,
just bail out rather than falling back to default behaviour.
- Other misc. cosmetic changes while I'm here.
"iostat -x" now shows these (ala linux/solaris), but this is only splitting
the read/write bytes/transactions, not adding any new metrics. "systat
iostat" now has two new commands to switch between combined/separate mode
for both it's numbers & bar modes.