60 Commits

Author SHA1 Message Date
ps
c9d616766c 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
phk
bc60c7cbae Use 'k' as suffix for Kilo
Pointed out by:	several.
2003-10-24 21:23:47 +00:00
phk
9d8ec418a7 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
phk
4f76708149 Let libdevstat calculate the device-busy % instead of home-rolling. 2003-04-09 07:49:43 +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
69de4d8f37 Add #include <sys/resource.h> 2003-02-16 15:46:25 +00:00
phk
4bfb37f22e Remove #include <sys/dkstat.h> 2003-02-16 14:13:23 +00:00
dillon
187e654d9a 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
des
b858776460 debug.{numvnodes,freevnodes} moved to vfs. 2002-06-06 23:01:50 +00:00
imp
0b20191705 remove __P 2002-03-22 01:42:45 +00:00
markm
fa1f2b9280 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
markm
65ffba233b 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
ken
bbe7059234 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
tmm
cacf0242b2 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
gallatin
5fb024dfe1 numdirtybuffers is an int, not a long. 2001-03-29 02:18:19 +00:00
tmm
d6fecac748 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
ache
313dba18c9 Don't attempt to parse %c 2001-03-21 20:32:20 +00:00
gallatin
397a29f117 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
gallatin
635ce2d734 fix int/long type mismatches found on alpha 2000-12-01 20:01:38 +00:00
rwatson
836f2ac02d 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
phk
b78772d544 Don't include <sys/buf.h> 2000-05-05 15:41:22 +00:00
imp
4721d7ef43 #include <errno.h> where needed. Kill extern int errno;.
Minor warnings in tip corrected.
2000-04-14 06:39:19 +00:00
green
09b47bdea7 "Disks" is more correct than "Disks" could be. 1999-09-19 18:04:54 +00:00
peter
3b842d34e8 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
des
445c400c38 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
bde
b97a8798b9 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
dillon
224065be12 Include discrete ozfod as well as ozfod/zfod percentage. 1999-02-08 02:39:45 +00:00
dillon
a7037f5e36 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
obrien
50d963beb7 revert to rev 1.29. (floppy drives will be gotten rid of another way) 1999-01-09 06:03:54 +00:00
obrien
ab302cd2cd 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
obrien
60e9f49335 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
obrien
59bd962db0 Quiet many compiler warnings. 1998-10-08 09:56:10 +00:00
ken
bd9fb75d91 Fix a core-dump situation in ":boot" mode in the vmstat display.
Reported by:	bde
1998-10-05 04:04:27 +00:00
gibbs
b954e9c264 Update system to new device statistics code.
Submitted by:	"Kenneth D. Merry" <ken@plutotech.com>
1998-09-15 08:16:45 +00:00
bde
cd1f335715 Fixed type mismatches which were fatal when sizeof(long) > sizeof(int). 1998-07-06 22:08:00 +00:00
imp
a51cfac665 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
jhay
02b6208b98 Correctly display the interrupt counts.
Reviewed with optimizations by:	Tor Egge <tegge>
1998-05-27 21:01:37 +00:00
peter
15c11737ff Show size of vnode pool in vmstat mode. 1997-09-25 01:14:25 +00:00
charnier
d1a307d129 Use err(3). /sys/dkstat.h -> /usr/include/sys/dkstat.h 1997-08-13 06:45:11 +00:00
jkh
3476d24e83 Now that systat's working again, bring the vmstat cleanup over from
-stable.
1996-11-12 19:16:46 +00:00
bde
d6f309e9f6 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
jkh
ab0ef148ae 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
ache
61c0414a60 Localize time 1996-03-31 16:39:26 +00:00
bde
f92ab04306 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
bde
06e92e8fee 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
58d9473581 Add explicit #include of <sys/vmmeter.h> after the last round of <vm/vm.h>
changes.
1995-12-13 11:34:46 +00:00
bde
7228eed755 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
rgrimes
a14d555c87 Remove trailing whitespace. 1995-05-30 06:41:30 +00:00
dg
8bdafddcb6 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
dg
c510e7263f Removed object lookup/hit count and changed the order of things a little. 1995-03-25 08:44:48 +00:00