bin/91034: minor fix to iostat so that columns line up with 128KB
xfers
Robert Cousins
rec at RCousins.com
Wed Dec 28 13:20:04 PST 2005
>Number: 91034
>Category: bin
>Synopsis: minor fix to iostat so that columns line up with 128KB xfers
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Dec 28 21:20:03 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Robert Cousins
>Release: 6.0
>Organization:
Cousins Consulting
>Environment:
FreeBSD hammer.home.rcousins.com 6.0-RELEASE FreeBSD 6.0-RELEASE #0: Tue Dec 13 17:37:31 PST 2005 rec at hammer.home.rcousins.com:/usr/src/sys/amd64/compile/HAMMER amd64
>Description:
Iostat's output can be kind of ugly under USF2 with 128KB transfers. Here is an example:
tty ad0 ad1 cpu
tin tout KB/t tps MB/s KB/t tps MB/s us ni sy in id
0 60 0.00 0 0.00 0.00 0 0.00 50 0 0 0 50
0 180 0.00 0 0.00 128.00 8 1.00 48 0 0 0 51
0 61 0.00 0 0.00 0.00 0 0.00 50 0 0 0 50
0 60 0.00 0 0.00 0.00 0 0.00 49 0 0 0 51
The problem comes from the KB/t column which goes one character too wide.
The patch I'm submitting notices when this value is >= 100 and
drops from 2 decimals to 1 in this case. The result is an output
like this:
tty ad0 ad1 cpu
tin tout KB/t tps MB/s KB/t tps MB/s us ni sy in id
0 60 0.00 0 0.00 0.00 0 0.00 50 0 0 0 50
0 180 0.00 0 0.00 128.0 8 1.00 48 0 0 0 51
0 61 0.00 0 0.00 0.00 0 0.00 50 0 0 0 50
0 60 0.00 0 0.00 0.00 0 0.00 49 0 0 0 51
I find this much easier to read. (A better fix would be to drop
down to 1 decimal digit for all values but I figured that would
be up to you, not me.)
>How-To-Repeat:
Run 'iostat 1' on any machine with periodic (bursty) I/O on a file system.
The results will be as shown above.
>Fix:
My fix is trivial but functional. You probably have a better way to do it.
*** old_iostat.c Wed Dec 28 13:01:20 2005
--- iostat.c Wed Dec 28 13:02:21 2005
***************
*** 696,707 ****
msdig,
ms_per_transaction);
} else {
! if (Iflag == 0)
printf(" %5.2Lf %3.0Lf %5.2Lf ",
kb_per_transfer,
transfers_per_second,
mb_per_second);
! else {
total_mb = total_bytes;
total_mb /= 1024 * 1024;
--- 696,713 ----
msdig,
ms_per_transaction);
} else {
! if (Iflag == 0) {
! if (kb_per_transfer < 100.)
printf(" %5.2Lf %3.0Lf %5.2Lf ",
kb_per_transfer,
transfers_per_second,
mb_per_second);
! else
! printf(" %5.1Lf %3.0Lf %5.2Lf ",
! kb_per_transfer,
! transfers_per_second,
! mb_per_second);
! } else {
total_mb = total_bytes;
total_mb /= 1024 * 1024;
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list