Commit Graph

60 Commits

Author SHA1 Message Date
Paul Saab
043da612df Fix an overflow when calculating the number of kilobytes from the
number of pages.

Obtained from:	Yahoo!
2005-02-21 14:35:00 +00:00
Poul-Henning Kamp
84b4ac514e Use 'k' as suffix for Kilo
Pointed out by:	several.
2003-10-24 21:23:47 +00:00
Poul-Henning Kamp
f46a0535ef When a numeric field overflows its width, try formatting the number in
'kilo' or 'mega' with appropriate suffix instead of filling the field
with stars.
2003-10-20 20:13:50 +00:00
Poul-Henning Kamp
1e3f260a6b Let libdevstat calculate the device-busy % instead of home-rolling. 2003-04-09 07:49:43 +00:00
Poul-Henning Kamp
7194d335cf 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
Poul-Henning Kamp
3bd41074f4 Add #include <sys/resource.h> 2003-02-16 15:46:25 +00:00
Poul-Henning Kamp
f341ca9891 Remove #include <sys/dkstat.h> 2003-02-16 14:13:23 +00:00
Matthew Dillon
f7550ecf3f Make 'sysctl vm.vmtotal' work properly using updated patch from Hiten.
(the patch in the PR was stale).

PR:             kern/5689
Submitted by:   Hiten Pandya <hiten@unixdaemons.com>
2003-01-11 07:29:47 +00:00
Dag-Erling Smørgrav
a5426997a3 debug.{numvnodes,freevnodes} moved to vfs. 2002-06-06 23:01:50 +00:00
Warner Losh
3f330d7d1a remove __P 2002-03-22 01:42:45 +00:00
Mark Murray
9ff712b0f5 WARNS=2 fixes with NO_WERROR set, as there are some header issues
with namelists. use __FBSDID().
2001-12-12 00:13:37 +00:00
Mark Murray
4b0ef38df3 Remove the 'irq' string from the irqN part of the "interrupts" display.
This allows us to see the irq number when device names ate too long.
2001-12-01 17:41:37 +00:00
Kenneth D. Merry
8f29de8be3 Convert systat(1) to use the new devstat interface.
Submitted by:	"Sergey A. Osokin" <osa@freebsd.org.ru>
2001-09-06 04:06:12 +00:00
Thomas Moestl
d62de5c4bb Replace a use of the hw.nintr sysctl as it has just gone away, cast
size_t variables when passing them to a printf-like function, and some
minor cleanups.
2001-06-01 13:29:19 +00:00
Andrew Gallatin
0b8b714fa9 numdirtybuffers is an int, not a long. 2001-03-29 02:18:19 +00:00
Thomas Moestl
342e2faa09 Get rid of setgid kmem for systat, and while being there, fix some bugs
and compiler warnings.
The data for network statistics are still obtained via the kvm interface
if systat was started with the needed privileges, otherwise sysctls are
used. The reason for this is that with really many open sockets, the
sysctl method is probably slower, but it systat -netstat is probably not
really usable in either mode under these conditions.

Approved by:	rwatson
2001-03-23 03:58:25 +00:00
Andrey A. Chernov
6ab831378a Don't attempt to parse %c 2001-03-21 20:32:20 +00:00
Andrew Gallatin
19f085228f Correct int/long type mismatch in the proper place this time. freevnodes
and numvnodes are longs in the kernel.  They should remain longs in systat,
what really needs to change is that they should be using SYSCTL_LONG rather
than SYSCTL_INT.   I also changed wantfreevnodes to SYSCTL_LONG because I
happened to notice it.

I wish there was a way to find all of these automatically..

Pointed out by: bde
2000-12-02 20:08:33 +00:00
Andrew Gallatin
d468ee6f1a fix int/long type mismatches found on alpha 2000-12-01 20:01:38 +00:00
Robert Watson
c3a2720353 o Make systat/vmstat.c use sysctl() to retrieve cp_time, bufspace,
maxvnodes, numvnodes, freevnodes, nchstats, and numdirtybuffers.
o Make the hw.ncpu error checking code a little more rigorous by
  sanity checking the returned data size.
o Didn't fix machine-dependent non-sysctl-exported variables:
  intrnames, eintrnames, intrcnt, eintrcnt, as these variables are
  defined and exported from machine-dependent kernel code in
  assembly.  This should probably be fixed somehow.
2000-11-25 03:53:42 +00:00
Poul-Henning Kamp
9df46d4a2a Don't include <sys/buf.h> 2000-05-05 15:41:22 +00:00
Warner Losh
0e7f0658ee #include <errno.h> where needed. Kill extern int errno;.
Minor warnings in tip corrected.
2000-04-14 06:39:19 +00:00
Brian Feldman
2b543de8c6 "Disks" is more correct than "Disks" could be. 1999-09-19 18:04:54 +00:00
Peter Wemm
c3aac50f28 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
Dag-Erling Smørgrav
a4a026b4c0 Show dirty buffers and the percentage of time a disk was busy.
PR:		12858
Submitted by:	Arjan de Vet <Arjan.deVet@adv.iae.nl>
1999-07-30 07:44:25 +00:00
Bruce Evans
0af0a4b0f4 Display floats with format %*.0f instead of as "*****" if there is
enough space for this but not enough space for the normal %*.*f
format.  Similarly for long doubles.
1999-03-22 03:44:01 +00:00
Matthew Dillon
2d7142ca1a Include discrete ozfod as well as ozfod/zfod percentage. 1999-02-08 02:39:45 +00:00
Matthew Dillon
8b4c04d3f3 If there are 4 or fewer disk devices, we have room to display additional
VM statistics.  zfod is moved and %slo-z ( percentage of zero-fills that
    were slow, i.e. not pre-zero'd ), and number of pages freed per second.
1999-02-08 02:11:52 +00:00
David E. O'Brien
154a13b5f8 revert to rev 1.29. (floppy drives will be gotten rid of another way) 1999-01-09 06:03:54 +00:00
David E. O'Brien
4ae16510d1 Turn the compile time option into a run-time option.
You can now use the `want_fd' command in the vmstat display.

Suggested by:	grog
1998-12-27 17:59:42 +00:00
David E. O'Brien
5647c79de5 Don't waste precious space on showing the performance of fdX.
(can get old behavior with -DWANT_FD)
1998-12-27 08:15:37 +00:00
David E. O'Brien
d22889b821 Quiet many compiler warnings. 1998-10-08 09:56:10 +00:00
Kenneth D. Merry
2459ccb484 Fix a core-dump situation in ":boot" mode in the vmstat display.
Reported by:	bde
1998-10-05 04:04:27 +00:00
Justin T. Gibbs
8d2fbde504 Update system to new device statistics code.
Submitted by:	"Kenneth D. Merry" <ken@plutotech.com>
1998-09-15 08:16:45 +00:00
Bruce Evans
81a4459b5f Fixed type mismatches which were fatal when sizeof(long) > sizeof(int). 1998-07-06 22:08:00 +00:00
Warner Losh
448b84a0e4 o Use snprintf rather than sprintf
o Add more checks for buffer overflows
o Use snprintf rather than strcat/cpy and have better checks for max
  length exceeded.

Most of these changes are not exploitable buffer overruns, but it never
hurts to be safe.

Inspired by and obtained from: OpenBSD
1998-06-09 04:17:29 +00:00
John Hay
73cdb7fd38 Correctly display the interrupt counts.
Reviewed with optimizations by:	Tor Egge <tegge>
1998-05-27 21:01:37 +00:00
Peter Wemm
39253d4c87 Show size of vnode pool in vmstat mode. 1997-09-25 01:14:25 +00:00
Philippe Charnier
d8793dfac3 Use err(3). /sys/dkstat.h -> /usr/include/sys/dkstat.h 1997-08-13 06:45:11 +00:00
Jordan K. Hubbard
b2ff494ac6 Now that systat's working again, bring the vmstat cleanup over from
-stable.
1996-11-12 19:16:46 +00:00
Bruce Evans
adb844d545 Initialize interrupt counters. The boot time values were displayed as ***.
Should be in 2.2.

Pointed out by:	/etc/malloc.conf -> AJ
1996-11-10 08:30:18 +00:00
Jordan K. Hubbard
94591e176e Cosmetic fixes for drive names which are 4 chars long.
Submitted-By: Joe Greco <jgreco@ns.sol.net>
1996-06-11 16:18:58 +00:00
Andrey A. Chernov
daab85586e Localize time 1996-03-31 16:39:26 +00:00
Bruce Evans
0e08ab6ff0 Renamed Proc-cache to Dir-cache for the same reasons as in vmstat.
Tweaked screen positions to match.
1996-03-29 14:48:25 +00:00
Bruce Evans
d376015efe Reduced vm dependencies. Only `struct vmmeter.h' is required.
Unfortunately, the sysctl number for reading this struct is
bogusly placed in <vm/vm_param.h> instead of with the declaration
of the struct.
1995-12-13 15:01:13 +00:00
Peter Wemm
0fe1bab6cc Add explicit #include of <sys/vmmeter.h> after the last round of <vm/vm.h>
changes.
1995-12-13 11:34:46 +00:00
Bruce Evans
926e94cd40 Don't attempt to read the variable total' from the kernel. total'
isn't used in systat or in the kernel (it was replaced by a sysctl()
call involving VM_METER) and will go away when I clean up bogus
common variables in the kernel.
1995-07-12 20:09:02 +00:00
Rodney W. Grimes
7799f52a32 Remove trailing whitespace. 1995-05-30 06:41:30 +00:00
David Greenman
90fef96dd0 From Mark Murray:
I got irritated with not seeing the interrupt numbers in a (crowded)
"systat -vmstat" display, so I fixed it. Here is a patch to please be
applied in src/usr.bin/systat
1995-03-29 00:10:14 +00:00
David Greenman
ff93e578a0 Removed object lookup/hit count and changed the order of things a little. 1995-03-25 08:44:48 +00:00