62 Commits

Author SHA1 Message Date
trasz
a764336979 Fix formatting for tps values between 99.95 and 99.99; previously
it would display as "100.0", breaking vertical alignment.

MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D23538
2020-02-21 20:57:32 +00:00
trasz
023908374d In iostat(8) output, skip the decimal point and the fractional part
for tps >= 100 and MB/s >= 1000, to prevent them for widening too much.

MFC after:	2 weeks
2019-06-16 17:32:05 +00:00
trasz
b0ff879a90 Reduce the precision of "MB/s" by one, making room for displaying
transfer rates larger 99MB/s.

MFC after:	2 weeks
2019-03-29 16:05:30 +00:00
trasz
425e829981 Make the "KB/s" field one character shorter (by reducing the precision)
and use the space to make the "tps" one character longer.

It makes the iostat(8) output a bit less messed up.

Reviewed by:	allanjude
MFC after:	2 weeks
Sponsored by:	Klara Inc.
Differential Revision:	https://reviews.freebsd.org/D19710
2019-03-28 20:16:19 +00:00
allanjude
2e502d0cd6 Make iostat -xC print CPU information on its own line
Requested by:	mahrens
Reviewed by:	kenm (maintainer), mahrens
MFC after:	1 week
Relnotes:	yes
Sponsored by:	ScaleEngine Inc.
Differential Revision:	https://reviews.freebsd.org/D15076
2018-04-18 02:25:03 +00:00
pfg
872b698bd4 General further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 3-Clause license.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

Special thanks to Wind River for providing access to "The Duke of
Highlander" tool: an older (2014) run over FreeBSD tree was useful as a
starting point.
2017-11-20 19:49:47 +00:00
trasz
93e98dca31 Make the "r/s" and "w/s" fields in "iostat -x" a little bit wider;
five chars is way too narrow for todays disks.

MFC after:	1 month
2016-09-21 11:22:19 +00:00
asomers
4a5681f2fa Fix the usr.sbin/iostat build with GCC, broken by r295768
Renamed some local variables for compatibility with -Wshadow

Reported by:	Andrew Turner
Tested by:	ken
MFC after:	4 weeks
X-MFC-with:	295768
Sponsored by:	Spectra Logic Corp
2016-02-22 21:40:53 +00:00
asomers
a107331a23 Fix compiler warnings in iostat
Raise WARNS from 1 to 6 (the default)
Fix warnings:
* Use C99 designated initializers for structs, and initialize all fields
* Mark global variables as static
* Mark unused function arguments
* Be careful about signed/unsigned comparisons

Reviewed by:	eadler
MFC after:	4 weeks
Sponsored by:	Spectra Logic Corp
Differential Revision:	https://reviews.freebsd.org/D5328
2016-02-18 20:08:01 +00:00
asomers
9a0871ec20 When iostat(8) receives SIGINT while running with "-w" or "-c", it will now
print statistics one more time before exiting. Also, it now implements the
wait using setitimer instead of sleep, so the waits will be more consistent
when the system is heavily loaded.

MFC after:	4 weeks
Sponsored by:	Spectra Logic Corp
Differential Revision:	https://reviews.freebsd.org/D4473
2015-12-09 18:07:26 +00:00
will
fd94a9f5f8 Print transfer times for read, write, & overall independently.
Round up calculated values for iops and average time per io to avoid a
shifting display if there are 1000+ (or even 10000+) iops, or if an
average time per io column is 1000+ ms.

Reviewed by:	ken
MFC after:	1 week
Sponsored by:	Spectra Logic
MFSpectraBSD:	1089947 on 2014/09/26
		1093625 on 2014/09/29
		1093650 on 2014/09/29
		1095662 on 2014/10/09
2015-01-23 15:55:03 +00:00
pluknet
ffed78fe94 iostat: fix extracting TTY statistics from core.
MFC after:	1 week
2013-11-25 22:55:47 +00:00
trociny
fa6bd7906a 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`.
2012-12-15 18:21:09 +00:00
dim
14cb3a31d3 In usr.sbin/iostat/iostat.c, use printf format specifiers from
inttypes.h for u_int64_t's.  While here, sort #include directives.

MFC after:	1 week
2011-12-17 20:25:23 +00:00
joel
0b5bdd518a Remove the advertising clause from UCB copyrighted files in usr.sbin. This
is in accordance with the information provided at
ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
2010-12-11 09:38:12 +00:00
ivoras
32a58110d0 Change "wait" banner to "qlen" to be more indicative of its purpose and to
be more inline with what gstat uses.

Reviewed by:	gnn
Silence from:	phk, keramida
2010-11-17 15:12:10 +00:00
sbruno
d60c486b88 Allow sub-second interval timings for iostat and vmstat.
e.g.
vmstat -w.5
iostat -w.5

Reviewed by:	jhb
Approved by:	scottl (mentor)
Obtained from:	Yahoo Inc.
MFC after:	2 weeks
2010-05-21 17:10:52 +00:00
keramida
51d21560af iostat: add a bit of space between tty in/out columns
The columns for tty input and output may bump against each other
if the tty output needs more than 5 columns.  Add a bit of space
that pushes everything 1 column to the right, but also avoids the
problem.

Approved by:	re (rwatson)
2009-08-15 17:57:21 +00:00
delphij
bb37baaeed Use calloc(). 2009-05-21 23:00:20 +00:00
adrian
0d6a982e10 Fix the device name spacing.
The old logic padded the device name out but assumed the unit number was one digit
long; this fails for things like SATA devices which (for me) begin at ad10.

Assemble the full device name in a temporary buffer and then calcluate padding
based on that string.
2008-09-11 09:55:54 +00:00
jhb
c990b20179 Use kvm_getcptime(3) to fetch the global CPU time stats from a crashdump
since the 'cp_time' symbol doesn't exist in recent kernels.  This fixes
iostat and vmstat on crash dumps.

MFC after:	1 week
2008-08-19 21:33:09 +00:00
jhb
6b2c2fe045 Pass the right pointer to bzero() when clearing cp_time.
MFC after:	1 week
2008-08-19 20:33:59 +00:00
keramida
eab3a8645a Repeat iostat header after rows-3 instead of a hardcoded 20.
Use ioctl() to get the window size in iostat(8), and force a new
header to be prepended to the output every time the current
window size changes.  Change the number of lines before each
header to `rows - 3' when the terminal is resized, so that the
full terminal length can be used for output lines.

PR:		bin/119705
Submitted by:	keramida
Approved by:	maxim
MFC after:	2 weeks
2008-01-22 11:18:51 +00:00
maxim
f4a836e936 o Fix a typo. errx() -> err().
Submitted by:	das
2008-01-12 20:57:19 +00:00
maxim
147942350a o Plug a memory leak: do not forget to free asprintf(3) allocated
memory.

PR:		bin/119608
Submitted by:	peter.schuller
MFC after:	1 week
2008-01-12 20:37:06 +00:00
maxim
16a9786df8 o Get missed "%" in output back.
Submitted by:	sem
MFC after:	1 week
2007-12-16 07:18:59 +00:00
maxim
32aa3c3c0d o With -x switch do not pay attention at the hardcoded limit of 3 devices and dump stats for all devices in the system. User can still limit iostat -x by -n switch.
Spotted by:	Igor Sysoev
Submitted by:	kensmith
Approved by:	re (kensmith)
MFC after:	2 weeks
2007-08-03 15:45:55 +00:00
maxim
1895dab4af o Re-indent long lines.
Style(9) wisdom from:	bde
2007-05-14 18:04:07 +00:00
maxim
a0d76ca625 o Fix several style bugs in the previous commit.
Prodded by:	bde
2007-05-12 16:42:01 +00:00
maxim
639e269d14 o Make iostat -Ix work: print per-interval I/O extended statistics.
PR:		bin/112559
Submitted by:	Dan Nelson
MFC after:	2 weeks
2007-05-12 09:28:34 +00:00
jhb
fb9d72e60d Make iostat(8) fully work on crash dumps again (broken since 5.0):
- Pass the address of the variable we are reading to kvm_read() rather
  than the index into the nlist array.
- Properly report errors from kvm_read() which returns -1 on error, not
  0.

MFC after:	3 days
2007-02-06 20:29:40 +00:00
maxim
aadf63b43a o De-register local vars. 2006-04-16 22:30:24 +00:00
maxim
c4d268bbdb o Trim EOL whitespaces and tabs, replace eight w/s by tabs.
No functional changes.
2006-04-16 22:28:04 +00:00
maxim
c6cab9cc48 o Implement Solaris-like -x flag: show extended disk statistics.
o Implement Solaris-like -z flag: omit lines for devices with no activity.
o iostat.8: describe -x and -z flags, Xr devstat(3), touch .Dd.

PR:		mostly bin/68840, with style changes; bin/73327
Submitted by:	Dan Nelson, Peter Schuller
Obtained from:	NetBSD (a part of man page)
MFC after:	1 month
2006-04-16 22:23:39 +00:00
phk
f432014308 Run a revision of the devstat interface:
Kernel:

Change statistics to use the *uptime() timescale (ie: relative to
boottime) rather than the UTC aligned timescale.  This makes the
device statistics code oblivious to clock steps.

Change timestamps to bintime format, they are cheaper.

Remove the "busy_count", and replace it with two counter fields:
"start_count" and "end_count", which are updated in the down and
up paths respectively.  This removes the locking constraint on
devstat.

Add a timestamp argument to devstat_start_transaction(), this will
normally be a timestamp set by the *_bio() function in bp->bio_t0.
Use this field to calculate duration of I/O operations.

Add two timestamp arguments to devstat_end_transaction(), one is
the current time, a NULL pointer means "take timestamp yourself",
the other is the timestamp of when this transaction started (see
above).

Change calculation of busy_time to operate on "the salami principle":
Only when we are idle, which we can determine by the start+end
counts being identical, do we update the "busy_from" field in the
down path.  In the up path we accumulate the timeslice in busy_time
and update busy_from.

Change the byte_* and num_* fields into two arrays: bytes[] and
operations[].

Userland:

Change the misleading "busy_time" name to be called "snap_time" and
make the time long double since that is what most users need anyway,
fill it using clock_gettime(CLOCK_MONOTONIC) to put it on the same
timescale as the kernel fields.

Change devstat_compute_etime() to operate on struct bintime.

Remove the version 2 legacy interface: the change to bintime makes
compatibility far too expensive.

Fix a bug in systat's "vm" page where boot relative busy times would
be bogus.

Bump __FreeBSD_version to 500107

Review & Collaboration by:	ken
2003-03-15 21:59:06 +00:00
phk
9948f76f41 Add #include <sys/resource.h>
My apologies for missing these #includes, I must have confused the
dependencies with a wrong timestamp or something.
2003-02-16 16:01:52 +00:00
phk
4bfb37f22e Remove #include <sys/dkstat.h> 2003-02-16 14:13:23 +00:00
bde
d8025b239f Use essentially the same formatting of the CPU stats percentages as in
vmstat so that they never coalesce.  Both iostat and vmstat need larger
fixes to prevent wide fields from unnecessarily messing up the alignment
of all subsequent fields.

PR:		41674
MFC-after:	3 days
2002-08-18 17:51:14 +00:00
bde
971c6f16e0 Include <nlist.h> for nlist interfaces instead of depending on namespace
pollution in <kvm.h>.
2002-08-18 17:35:55 +00:00
guido
f1bb635905 Redo patch in 1.22 such that the header printing is reset when the
process gets a SIGCONT

Reviewed by:	kris@freebs.org
MFC after:	2 weeks
2001-09-26 19:35:03 +00:00
kris
5c1ab9470b Don't do unsafe activities in the syscall handler.
MFC after:	2 weeks
2001-09-01 07:40:19 +00:00
ken
82ad2929ed Bring in some iostat fixes that bde reminded me about. These fixes were
originally written in January, 2000, but have been substantially updated.

- No longer use hz/stathz and the CPU times in computing the TTY stats,
  but rather use etime, like the disk stats.
- Clean up malloc/realloc failure tests.
- Use a new integrated routine to fetch devstat information via sysctl or
  KVM.
- Get rid of the X() macro for calculating CPU stats
- Use rint() on the CPU state display to avoid truncation errors.  (this
  requires libm)
- Clean up flag usage somewhat.

Reviewed by:	bde
2001-08-23 03:19:54 +00:00
tmm
fbdd58046b Make use of the new features of libdevstat to allow iostat to work on
crash dumps, and make it use sysctl for all data retrievals in the
"live" case (i.e. when not using iostat on a crash dump).
Remove setgid kmem for the iostat executable, it is not needed any
more after these changes.

Reviewed by:	ken
2001-08-04 18:30:54 +00:00
jedgar
24771a5a3c Properly check malloc(3) return values
Approved by:	ken
2000-12-01 12:02:16 +00:00
asmodai
d086bc9763 Remove bogus include, as per style(9).
Remove unused variable.
2000-04-30 17:05:26 +00:00
charnier
6b7275814f Back out previous commit minus spelling fixes. Should have asked maintainer
before.
2000-01-24 22:08:19 +00:00
charnier
33144f5460 Rework use of Nm.
Remove -? flag that was not working but documented. Make it work instead
but hide it in man page and usage string as others tools do.
Spelling.
Abort on allocation failure (with errx()).
2000-01-23 20:19:34 +00:00
peter
efabb9ccb1 $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
imp
95568d31ee Per Ken's request, back out my last change to this file. iostat's man
page documents '?' as a valid option, as does the usage message.  None
of the other programs' man pages documented '?' as a valid option.
1999-06-24 07:39:25 +00:00
imp
37b915c08f Two getopts related nits:
o getopt returns -1 rather than EOF on errors
	o getopt returns '?' for characters it doesn't know about, so
	  don't include them in the getopt options string.
1999-06-24 06:43:21 +00:00