History log of /freebsd-10.2-release/usr.bin/systat/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
285830 23-Jul-2015 gjb

- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
builds.
- Update newvers.sh to reflect RC1.
- Update __FreeBSD_version to reflect 10.2.
- Update default pkg(8) configuration to use the quarterly branch.[1]

Discussed with: re, portmgr [1]
Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

279473 01-Mar-2015 rstone

MFC r272284

Fix integer truncation in affecting systat -ifstat

The "systat -ifstat" command was using a u_int to store byte counters.
With a 10Gbps or faster interface, this overflows within the default
5 second refresh period. Switch to using a uint64_t across the board,
which matches the size used for all counters as of r263102.

PR: 182448
MFC after: 1 week
Sponsored by: Sandvine Inc


262643 01-Mar-2014 brooks

MFC r261296:

Merge from CheriBSD:
commit c1acf022c533c5ae27e0cd556977eafe3f5959eb
Author: Brooks Davis <brooks@one-eyed-alien.net>
Date: Fri Jan 17 21:46:44 2014 +0000

Add an option WITHOUT_NCURSESW to suppress building and linking to
libncursesw. While wide character support it useful we'd like to
only need one ncurses library on embedded systems.

Sponsored by: DARPA, AFRL


256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


253360 15-Jul-2013 glebius

Nuke "systat -mbuf". It was broken since FreeBSD 5, and since there
haven't been any complaints, no one used it.


248647 23-Mar-2013 mav

Make `systat -vmstat` to use suffixes to display big floating point numbers
that are not fitting into the specified field width, same as done for ints.
In particular that allows to properly display disk tps above 100k, that are
reachable with modern SSDs.


247272 25-Feb-2013 joel

Remove EOL whitespace.


247037 20-Feb-2013 melifaro

Fix several new & old style issues.

Pointed by: ae, pluknet, zont
MFC with: r247036


247036 20-Feb-2013 melifaro

Add interface name filtering via 'match' cmd.
Add 'pps' cmd for switching beetween interface packets/bytes statistics.

Submitted by: vsevolod
MFC after: 2 weeks


246987 19-Feb-2013 charnier

Remove old-style function definition


246033 28-Jan-2013 zont

- Show page faults requiring I/O on vmstat display.

Reviewed by: alc
MFC after: 2 weeks


240605 17-Sep-2012 melifaro

Make systat(1) accept fractional number of seconds.
Make old alarm(3)-based code use select(2).

MFC after: 2 weeks


239991 01-Sep-2012 ed

Rework all non-contributed files that use `struct timezone'.

This structure is not part of POSIX. According to POSIX, gettimeofday()
has the following prototype:

int gettimeofday(struct timeval *restrict tp, void *restrict tzp);

Also, POSIX states that gettimeofday() shall return 0 (as long as tzp is
not used). Remove dead error handling code. Also use NULL for a
nul-pointer instead of integer 0.

While there, change all pieces of code that only use tv_sec to use
time(3), as this provides less overhead.


231011 05-Feb-2012 ed

Whitespace fixes.

- Remove redundant empty lines.
- Replace ^L by \014. This allows you to safely cat/grep/etc this file
without causing confusion.


229403 03-Jan-2012 ed

Replace index() and rindex() calls with strchr() and strrchr().

The index() and rindex() functions were marked LEGACY in the 2001
revision of POSIX and were subsequently removed from the 2008 revision.
The strchr() and strrchr() functions are part of the C standard.

This makes the source code a lot more consistent, as most of these C
files also call into other str*() routines. In fact, about a dozen
already perform strchr() calls.


228992 30-Dec-2011 uqs

Spelling fixes for usr.bin/


226424 16-Oct-2011 ed

Use integer to store the result of getch().

We need to use an integer to make the comparison against ERR work.

MFC after: 3 months


226396 15-Oct-2011 ed

Fix whitespace inconsistencies in systat(1).

According to md5(1), the resulting binary is the same.


223493 24-Jun-2011 kevlo

Remove duplicated header files


216370 11-Dec-2010 joel

Remove the advertising clause from UCB copyrighted files in usr.bin. This
is in accordance with the information provided at
ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change

Also add $FreeBSD$ to a few files to keep svn happy.

Discussed with: imp, rwatson


212313 08-Sep-2010 mav

For total interrupt count on -vm screen count all interrupts, but not only
those which fit the screen.


211397 16-Aug-2010 joel

Fix typos, spelling, formatting and mdoc mistakes found by Nobuyuki while
translating these manual pages. Minor corrections by me.

Submitted by: Nobuyuki Koganemaru <n-kogane@syd.odn.ne.jp>


210228 19-Jul-2010 mav

Partially revert r209312, restoring ability to fit "stray irqX" names into
into available 10 characters by dropping "irq" in the middle of string.


209312 18-Jun-2010 mav

Do not print first digits of IRQ number if whole number doesn't fit.


204329 25-Feb-2010 ru

Fixed dependencies (make checkdpadd).


202200 13-Jan-2010 ed

Perform all trivial ports to utmpx for usr.bin/.

They were already converted to use libulog, so it's easy to convert them
to utmpx.


201386 02-Jan-2010 ed

Build usr.bin/ with WARNS=6 by default.

Also add some missing $FreeBSD$ to keep svn happy.


200462 13-Dec-2009 delphij

Revert most part of 200420 as requested, as more review and polish is
needed.


200420 11-Dec-2009 delphij

Remove unneeded header includes from usr.bin/ except contributed code.

Tested with: make universe


200167 05-Dec-2009 ed

Let systat's vmstat use utmpx.


199242 13-Nov-2009 ume

Use ncursesw to output the date field of vmstat display
with multi-byte string, correctly.


197956 11-Oct-2009 jh

- Catch SIGHUP to perform cleanup before exiting.
- Exit if getch() returns with an error other than EINTR. Otherwise
systat(1) may get stuck in an infinite loop if it doesn't receive
SIGHUP when terminal closes. [1]
- Remove attempt to clear stdio error indicators. getch() doesn't use
stdio, making it useless. [2]
- Remove unneeded masking of getch() return value. [2]

PR: bin/107171
Reviewed by: bde
Approved by: trasz (mentor)
Obtained from: OpenBSD [1]
Suggested by: bde [2]
MFC after: 1 month


189848 15-Mar-2009 rwatson

Correct a number of evolved problems with inp_vflag and inp_flags:
certain flags that should have been in inp_flags ended up in inp_vflag,
meaning that they were inconsistently locked, and in one case,
interpreted. Move the following flags from inp_vflag to gaps in the
inp_flags space (and clean up the inp_flags constants to make gaps
more obvious to future takers):

INP_TIMEWAIT
INP_SOCKREF
INP_ONESBCAST
INP_DROPPED

Some aspects of this change have no effect on kernel ABI at all, as these
are UDP/TCP/IP-internal uses; however, netstat and sockstat detect
INP_TIMEWAIT when listing TCP sockets, so any MFC will need to take this
into account.

MFC after: 1 week (or after dependencies are MFC'd)
Reviewed by: bz


189626 10-Mar-2009 jhb

Update top and systat for vfs.bufcache now being a long rather than an int.


175387 16-Jan-2008 delphij

ANSIfy and remove register.

Resulting binary verified with strip(1)+md5(1).


175239 12-Jan-2008 delphij

- Handle the case where interface from "middle" is missing by
more carefully inspecting the return value from sysctl(3). [1]
- Use calloc instead of malloc+memset of zero.

Submitted by: Alexander Chernikov <admin su29 net> [1]
PR: bin/119581
MFC after: 2 weeks


172674 15-Oct-2007 netchild

Backout sensors framework.

Requested by: phk
Discussed on: cvs-all


172649 14-Oct-2007 ru

Bump document date for the last change.


172631 14-Oct-2007 netchild

Import OpenBSD's sysctl hardware sensors framework.

This commit includes the following core components:

* sample configuration file for sensorsd
* rc(8) script and glue code for sensorsd(8)
* sysctl(3) doc fixes for CTL_HW tree
* sysctl(3) documentation for hardware sensors
* sysctl(8) documentation for hardware sensors
* support for the sensor structure for sysctl(8)
* rc.conf(5) documentation for starting sensorsd(8)
* sensor_attach(9) et al documentation
* /sys/kern/kern_sensors.c
o sensor_attach(9) API for drivers to register ksensors
o sensor_task_register(9) API for the update task
o sysctl(3) glue code
o hw.sensors shadow tree for sysctl(8) internal magic
* <sys/sensors.h>
* HW_SENSORS definition for <sys/sysctl.h>
* sensors display for systat(1), including documentation
* sensorsd(8) and all applicable documentation

The userland part of the framework is entirely source-code
compatible with OpenBSD 4.1, 4.2 and -current as of today.

All sensor readings can be viewed with `sysctl hw.sensors`,
monitored in semi-realtime with `systat -sensors` and also
logged with `sensorsd`.

Submitted by: Constantine A. Murenin <cnst@FreeBSD.org>
Sponsored by: Google Summer of Code 2007 (GSoC2007/cnst-sensors)
Mentored by: syrinx
Tested by: many
OKed by: kensmith
Obtained from: OpenBSD (parts)


172207 17-Sep-2007 jeff

- Move all of the PS_ flags into either p_flag or td_flags.
- p_sflag was mostly protected by PROC_LOCK rather than the PROC_SLOCK or
previously the sched_lock. These bugs have existed for some time.
- Allow swapout to try each thread in a process individually and then
swapin the whole process if any of these fail. This allows us to move
most scheduler related swap flags into td_flags.
- Keep ki_sflag for backwards compat but change all in source tools to
use the new and more correct location of P_INMEM.

Reported by: pho
Reviewed by: attilio, kib
Approved by: re (kensmith)


172143 11-Sep-2007 ru

- Stop computing %CPU for the imaginary idle process; we now
have real idle processes for that.

- Fix the display on SMP by not scaling the sum of %CPU down
to 1. Instead, display raw data as computed by the kernel,
like in top(1).

Reviewed by: bde
Approved by: re (bmah)
MFC after: 1 week


170784 15-Jun-2007 jhb

Expand TCP counters from 9 digits to 12.

MFC after: 1 week
PR: bin/112881


170782 15-Jun-2007 jhb

Consistently indent the R() macro for fields on the right-side of the
display to make the code easier to read.

PR: bin/112881


170780 15-Jun-2007 jhb

Add a new counter for retransmitted packets due to SACK.

PR: bin/112881
Submitted by: Phil Rosenthal <pr isprime com>


166084 18-Jan-2007 ru

Fix definitions of kilobits etc.

PR: bin/106116
Nudged by: Rostislav Krasny
MFC after: 3 days


165506 23-Dec-2006 yar

Add missing things: a prototype and a const qualifier.

Found by: WARNS=4


165501 23-Dec-2006 yar

Dynamically resize the Disk column. It was too narrow for modern
disk device names such as da0s1b. So we also get rid of the nasty
constant 5 scattered over the code.

Implementing this change is a good chance to improve other bits
around it: init saved lengths early, always check return value from
kvm_getswapinfo().


165499 23-Dec-2006 yar

Clear to EOL after the end of meter so that its reading can decrease.


165498 23-Dec-2006 yar

Make it possible for meter to reach 100% mark when swap is totally full.


165495 23-Dec-2006 yar

Improve style:
- Don't define vars inside loops.
- Avoid useless casts.
- Use C idioms.
- Do alike things in a consistent way.


165493 23-Dec-2006 yar

Reposition the "(swap not configured)" sign WRT the new layout.


165492 23-Dec-2006 yar

Eliminate a couple of screen coordinate variables
that were useless and just obfuscated the code.


165491 23-Dec-2006 yar

Add some vertical whitespace for easier reading.


165490 23-Dec-2006 yar

Fix the swap display further:

1) Resize the Used column to avoid screen overflow if BLOCKSIZE is long.
2) Track the current swap configuration so that its changes don't break
the display.

Suggested by: bde (1)


165489 23-Dec-2006 yar

Fix the Total line shown if there are >1 swap devices.


165488 23-Dec-2006 yar

Start fixing the "swap" display by saving one horizontal position.
Now the display won't overflow the 80-char row if BLOCKSIZE=1024.
The new spacing is also consistent with the "pigs" display.


164718 28-Nov-2006 ru

- Revert signedness type changes to "struct vmtotal"; by making
them unsigned I made the possible overflows hard to detect,
and it only saved 1 bit which isn't principal, even less now
that the underlying issue with the total of virtual memory has
been fixed. (For the record, it will overflow with >=2T of
VM total, with 32-bit ints used to keep counters in pages.)

- While here, fix printing of other "struct vmtotal" members
such as t_rq, t_dw, t_pw, and t_sw as they are also signed.

Reviewed by: bde
MFC after: 3 days


164695 27-Nov-2006 yar

Back out rev. 1.17: arch-dependent WARNS level.

The policy is that the WARNS level should characterize the
quality of a piece of code irrespective of any conditions.
Otherwise the code doesn't deserve the WARNS level assigned.

Requested by: ru


164689 27-Nov-2006 yar

Consistently mark percentage scales as such.

PR: bin/101975
MFC after: 3 days


164681 27-Nov-2006 yar

systat(1) reaches WARNS=6 on i386 and amd64. This is good
for catching general regressions in future. Unfortunately,
it still displays some problems at WARNS=6 on architectures
with stricter alignment requirements, e.g., ia64.


164680 27-Nov-2006 yar

The logic of fetchnetstat_sysctl() isn't too complex: if idx is 0,
we set and use xtp; if idx is 1, we set and use xip; the other cases
are impossible. However, GCC cannot see that xip and xtp are always
initialized before use because they are initialized and used in
different if/else blocks. So setting them to NULL at the very
beginning won't hurt.


164679 27-Nov-2006 yar

+ WARNS=4 reminds that nlist.n_name isn't const.
+ Use C99 initializers to be WARNS-clean.
+ The last element in a namelist should have its n_name set to NULL,
not to an empty string.


164678 27-Nov-2006 yar

Don't discard a const qualifier from constant strings.


164677 27-Nov-2006 yar

Remove a wrong "const" qualifier.

Spotted by: WARNS=6


164675 27-Nov-2006 yar

Add the Tera scale factor, which is an easy job now.
More scale factors would overflow the command line where
the help for "scale" were shown.


164673 27-Nov-2006 yar

Stop exposing things that can be private to convtbl.c.


164672 27-Nov-2006 yar

Keep all convtbl-related constants and strings in convtbl.[ch].


164671 27-Nov-2006 yar

Allow for large scale factors. C99 warrants that
ULLONG_MAX is not less than 2^64-1; and uintmax_t
cannot be more narrow than unsigned long long.
This allows for scale factors up to Exa inclusively.

Use plain int for the scale index to be consistent
with ifcmds.c and enum.


164670 27-Nov-2006 yar

Return back one initializer, it is needed.


164669 27-Nov-2006 yar

+ Drop useless initializers.
+ style(9).


164666 27-Nov-2006 yar

Drop useless #includes.


164664 27-Nov-2006 yar

Use C99 initializers so that we don't really have to worry
about the order of related things at several places.


164663 27-Nov-2006 yar

C can enumerate things for us.


164637 26-Nov-2006 yar

There is no reason to use __inline here because we are rather far
from a path critical to performance.


164636 26-Nov-2006 yar

Don't overflow from the gigabyte scale to the bit scale if the
number to auto-scale is >= 1024 Gb. Could be triggered on arches
where ifdata counters had 64 bits.

Reported by: Miroslav Slavkov on -net
MFC after: 3 days


164631 26-Nov-2006 yar

The real contents of this file were repeated twice.
The repetition was harmless due to a usual #ifndef _FOO_H_ wrapper.
Fortunately, nobody started to hack the second copy,
so just remove it from the file.

MFC after: 3 days


164557 23-Nov-2006 ru

Fix the format specifier suitable for uintmax_t.


164443 20-Nov-2006 ru

- Fix types of "struct vmmeter" members so they are unsigned.

- Fix overflow bugs in sysctl(8), systat(1), and vmstat(8)
when printing values of "struct vmmeter" in kilobytes as
they don't necessarily fit into 32 bits. (Fix sysctl(8)
reporting of a total virtual memory; it's in pages too.)


163264 12-Oct-2006 ru

Memory utilization subscreen in "vmstat" display lists numbers in KB,
not in number of pages.

PR: docs/71690
Submitted by: Jan Srzednicki

(A patch is only partially merged, the rest was already fixed by bde@
in rev. 1.51.)


160750 27-Jul-2006 yar

Obey MK_INET6_SUPPORT.


160607 24-Jul-2006 rwatson

Remove MT_FTABLE printout in systat, as MT_FTABLE mbufs are no longer
used in the kernel.


158909 25-May-2006 brd

s/on a crt//
systat is working great on this LCD ;)

Submitted by: Ben Haga <tuximus AT absoludicrous DOT com>
MFC after: 3 days


158206 01-May-2006 bde

For the vmstat sub-display:

vmstat.c:
Move totfr to be under daefr and prcfr since it logically belongs there.

Move all the count fields (wire, act, inact, cache and free) to near
the bottom of the sub-display (after all the rate fields) to reduce
competition with adjoining sub-displays.

systat.1:
Move things as above.

Attempt to improve missing and poor wording in the description of the
fields. The long sentence was hard to parse and didn't say anything
about the different units.

Increment .Dd.


158201 01-May-2006 bde

Unbreak the support for 24-row terminals in the vmstat display. The
part that handled the 17th and 18th rows of the vmstat-proper subdisplay
was deleted in rev.1.10 when these rows stopped being used and was not
restored when the 17th row was used again. For such terminals, we now
lose the `buf' field instead of making a mess with it. Terminals with
fewer than 24 rows have never been supported.

The problem is not avoided by using curses since we use the last line
for data entry and don't use a separate subwindow for this line.
Some other things in the vmstat display could be handled better using
subwindows.


158198 30-Apr-2006 bde

Sort the ex-extended vmstat fields into their documented order in the
output too.

Fine tune all coordinates and most field widths in the vmstat (sub)display
for this and previous changes now that we have to change almost all of them
just to move the ex-extended fields:
- change VMSTATROW back to 7. It was 6 due to a hack in the extended vm
stats changes.
- reduce the maximum field width that we try for from 9 to 8. 4 or 5 is
enough for most fields but we try to use the same width for all fields.
8 is enough to display everything without changing units memory sizes
exceed 100GB.

Fix some unrelated coordinates and field widths in comments.


158196 30-Apr-2006 bde

Eliminate the "extended" vm stats. Move all fields in the extended
vm stats to the normal vm stats. Sort them into the normal stats
according to the man page only in the source code so that diffs are
almost readable. Reduce style bugs in printing the value of %ozfod.


158193 30-Apr-2006 bde

Update for moving some fields to the new vnstat display.

Don't say that `cache' is for the buffer cache.

Describe the uselessnes of `buf'.


158187 30-Apr-2006 bde

Reduce the namei (sub)display by 5 columns to make enough space for a
new vnstat display to the right of the namei display.

Move the non-vmstat fields {des,num,fre}vn from the vmstat display to a
new vnstat display. Move the dtbuf field there too. The buf and dtbuf
fields are non-vmstat and non-vnstat, so there is no good place to
display them. I need to move at least 1 of them out of the vm stats
for further cleanups of the vm stats, and there is only space for 1
of them in the vn stats. (The best place for the current buf field
is actually /dev/null, since it has been completely broken for about
10 years and broken for longer. It gives an uninteresting virtual
memory count where an interesting real memory count is wanted.)


158175 30-Apr-2006 bde

Removed the description of the nonexistent want_fd command. want_fd existed
for only 2 weeks in 1998-1999. It was replaced by general commands to
select the set of disk drives displayed.


158174 30-Apr-2006 bde

Don't redraw the disk names on every update. This was apparently done
to handle changes to the set of disks selected, but it is unnecessary
for that since the whole screen is redrawn when this set is changed.
It was also buggy:
- MAXDRIVES*6 = 42 was hard-coded as only 30 spaces in a string literal,
the last 2 disk names were not cleared as intended
- when the extended vmstats are active, clearing of even 30 columns
overruns the ozfod value field by 3 columns. This was harmless because
the field is much wider than necessary.


158172 30-Apr-2006 bde

Fix "slow (on-the-fly) zero fills percentage (`%slo-z')" some more. The
value printed is actually the optimized (i.e., the non-slow, not-on-the-fly
zero fills percentage) except in overflow cases. Describe it as %ozfod
in the display. Move the field descriptor 1 to the left so that there
is space for 5 characters after the % sign (this leaves no space between
the number and the descriptor but the % character serves well as a
separator).

Fixed integer overflow at z.ozfod = UINT_MAX/100 in the calculation of
%ozfod. This value can be reached just a few hours or minutes after
booting, so %ozfod was usually garbage in boot mode. Now %ozfod is
correct in boot mode for a few days or hours.

Print a non-dummy %ozfod when the division for it isn't division by 0
instead of when the result will be less than 100%. A result of 100%
may be correct, though a result of more than 100% indicates overflow
of one or both counters.


158168 30-Apr-2006 bde

If DEBUG is defined, then fill numeric fields with asterisks instead of
spaces and numbers for temporary(?) debugging.


158161 30-Apr-2006 bde

Remove trailing whitespace.

Submitted by: Se=E1n Farley <sean-freebsd at farley dot org>
PR: bin/81874


158160 30-Apr-2006 bde

Show the load average in the tcp display (it was already shown, perhaps
not very usefully, in all other displays). This was the original point
of the PR.

Move the load average up by 2 so that it starts in row 0 for all windows
(2 lines above it were wasted for all other windows except vmstat).
Move everything below it up by 2 or 3 (3 for icmp and icmp6 which had
an extra blank line due from not compensating for the foot-shooting in
note (3); only ip and ip6 compensated). Reduce the magic numbers related
to this.

Notes by the submitter:
%%%
1. All the subwin() calls are identical using #define MAINWIN_ROW 3
(systat.h).
2. The load average is at the top of the window.
3. Each display starts on the fourth line. I made changes to those
displays that shifted the start line (i.e., icmp). This entailed a
lot of changes within the comments at the top of those displays.
4. For ip6, I shifted the "Input next-header histogram" column down one
row to separate it from "IPv6 Output". I raised "bad scope packets"
and "address selection failed" up one row to stay with "IPv6 Input"
(valid?). They were down one row to probably line up at the bottom,
but I think they should stick with their fellow items in a column.
5. I condensed ifstat a bit. It had a lot of empty rows.
%%%

Submitted by: Se=E1n Farley <sean-freebsd at farley dot org>
PR: bin/81874


158154 30-Apr-2006 bde

Edit the interrupt name strings to shorten them. This is believed to
only affect amd64 and i386. alpha uses "intr N" instead of "irqN" and
mostly has no device names. ia64 uses only device names.

- Edit interrupt names once after they are read from the kernel and not
every time they are displayed.
- Discard bogus trailing spaces so that the next step doesn't move things
to oblivion.
- If an interrupt name starts with "irqN:" (as it usually does in on
amd64 and i386), then move "irqN" to the end and strip ":", since we
have no space for the ":" and don't want to start descriptions with
"N" after stripping "irq" in the next step (since "N" would look like
a count). This step may need reworking for interrupt names containing
several device names -- then moving the irq number to the end would
lose it instead of losing some device names.
- Remove "irq" from an interrupt name if and only if the original name is
too long to display.


158152 30-Apr-2006 bde

Backed out rev.1.49 since it had buffer overruns and only worked
accidentally.

Read buffer overruns:
The size of the target array (TSOTTA == 10) is a wrong limit to use for
scanning the source string.

Write buffer overruns:
TSOTTA is also a wrong limit to use for copying to the target buffer,
since we want to add a NUL terminator afterwards. TSOTTA was also 1
too small for holding both the desired number of visible characters
and the NUL.

Worked accidentally:
There is error in the algorithm that tends to result in the space saved
by stripping "irq" not actually being used, but some cases worked
accidentally provided "irqN" is near the end of the source string and
"N" is only 1 digit.

Starting with 5.mumble-CURRENT, "irqN" is at the beginning of the
string on all (?) arches that have it and the accidents don't happen.
E.g. on i386's, the keyboard irq is now named
"irq1: atkbd0<bogus blank padding>" by the kernel, and this name was
converted to "1: atkb" -- not only the device number but part of the
device name has been lost --, while before 5.mumble the kernel name
was "atkbd0 irq1" and systat accidentally preserved the irq number to
give "atkbd0 1". The ":" in the string wastes precious space, and
stripping "irq" results in descriptions starting with numbers which
makes them look too much like counts. This commit just fixes the last
problem.


158150 29-Apr-2006 bde

Abbreviate long field descriptors at write time so that they don't get
clobbered at runtime:
dirtybuf -> dtbuf
desiredvnodes -> desvn
numvnodes -> numvn
freevnodes -> frevn
The vmstats column has only 5 characters available for descriptors, but up
to 13 were used. The extras get clobbered at runtime by interrupt values
and/or descriptors on systems with more than 12 interrupt sources.
%slo-z -> %sloz
This one is in the "extended" vmstats area and doesn't get clobbered now.

Removed stale documentation of desvn.

Changed a descriptor:
tfree -> totfr
so that it is consistent with the abbreviations for other free counts
(daefr and prcfr) and thus almost decodeable.

Fixed missing documentation of tfree/totfr. This and everything else
in the extended vmstats area is misdocumented as being in a certain
place in the vmstats column.


156835 18-Mar-2006 jmg

add an entry for ozfod..

MFC after: 3 days


156826 18-Mar-2006 jmg

fix spelling of ozfod... I've been wondering why we'd need to fill a page
w/ non-zero data, and it turns out we don't... This is really optimized
zero filled on demand, or pages that were already zero'd for us...

MFC after: 3 days


155677 14-Feb-2006 bde

Move the "r p d s w" fields to the left to create space for expansion.
3 columns were wasted at the left, except these columns were used to
make the header line up. Now there is no space on the same line for
the "Proc:" part of the header. Try putting this on the line above
although it clutters that line (there is already similar clutter for
the "Interrupts" header). Leave 1 column between these fields. With
the above and a previous change there is enough of space for this.

Use 5 columns instead of 3 for the number of users since 3 is not quite
enough and there was space to spare. This also fixes an off-by-2 error
in a previous fix forthe column count in the comment on STATROW.

Move all the pager fields 1 to the right so that the "count" and "pages"
descriptors more clearly apply to the pager fields and not the memory
fields. There was space to space.

Waste some of the spare space at the right of the pager fields to expand
all the pager field widths to their old values (but now with a column
between the fields). There are fields more in need of expansion but most
of them are not in places near spare space.


155670 14-Feb-2006 bde

Removed the frobbing of CPU percentages from > 99.9 to 99.9. Rev.1.35
made it unnecessary. (Rev.1.6 had to reduce the field width to 4, and
changed 100.0 and preposterous larger values down to 99.9 since 100.0
wouldn't have fitted. Rev.1.35 handles precentages > 99.9 well enough by
changing the format to %.0f when the string given by the initial format
is too wide.)

Even with this change, during short testing I've never seen a percentage
of 100 being displayed by systat -v, although top(1) displays percentages
of 100 user or 100 idle for similar loads.


155668 14-Feb-2006 bde

Fix some minor bugs:

Always use snprintf()'s return value, since discarding it is a style
bug at best and using it here gives slightly simpler code and better
error checking. Use snprintf() in putlongdouble() the same as in
putfloat(). (1.25 changed most sprintf()'s to snprintf()'s to fix
non-bugs without changing the logic to use the result of snprintf();
1.27 restored one of the sprintf()s by cloning a stale version of
putfloat().)

Don't print a too-long field in the unlikely case that the fallback
to M units in putint() leaves the field still too long. (The fallback
to printing stars was lost in rev.1.58 when the fallback to M units
was added.)


155666 14-Feb-2006 bde

Reduce the field width by 1 for many numeric fields so that most fields
cannot run into other fields or field descriptors. If the value is
too large to fit in the field width, then the output format is adjusted
so that the value (usually) fits, but with fields running together
externally this adjustment usually didn't help. Mostly it doesn't
matter to lose 1 digit of precision, but switching the output format
is bad if it happens often or gives bogus units. The loss of width
is most serious for fields near "Csw" (which are also the ones which
must often ran together) since these have a high variance and large
values relative to the possible field widths so the switch occurs more
often now, and for the memory size fields where the switch gives the
bogus units kKB or MKB.

Now only the fields for r, p, d, s and w can run into each other.
These fields have width 3, and 3 cannot be reduced to 2 without losing
all precision when the value is between 100 and 999.

Trim "pdwake" to "pdwak" at think time now that it doesn't get clobbered
at runtime. The manpage doesn't need to be changed for this because
it documents the clobbered descriptor, unlike for 4 other too-long
descriptors which only get clobbered if there are lots of interrupt
sources.

Trim "% busy" to "%busy" since most other descriptors for percentages
are spelled without the space and this change makes changing the widths
of the %busy fields unnecessary.


155665 14-Feb-2006 bde

Oops, the "excessive" {} removed in the previous commit was needed
around PUTRATE() because PUTRATE() only looked like a function -- it was
multiple statements. Use "do {...} while(0)" as usual in PUTRATE() so
that it is a single statement that can be used like a function.


155663 14-Feb-2006 bde

Fixed all (?) bitrot in the comments about the number of columns used by
various groups of fields.


155660 14-Feb-2006 bde

Fix all (?) cases where the field width of a numeric field was far too
large. In most cases it is still 1 too large, so fields tend to run
together, but in the following cases it was more than 1 too large, and
the starting column was too small too, so the field started inside the
previous field or descriptor and clobbered that:
- "wire": the number for this overwrote 2 characters of the number for
"Flt". Reduce the field width by 3 (2 to avoid the overwrite and 1
so that the fields don't run together). This was already done for
the preceding number for "cow".
- "inact": the number for this overwrote 1 character of the descriptor
"Idle". Reducing the field width by 2 is enough.
- "cache:" the number for this overwrote 3 characters of the scale
"...| |". The field width should be reduced by 4 to keep things
from running together, but that is a lot and not so necessary here
since the final "|" in the scale serves as a delimiter. Only reduce
it by 3.
- "free": the number for this overwrote 2 characters of the bar graph.
The character position under the final "|" in the scale is apparently
not used, so reducing the field width by 3 is enough.

When "zfod" is in the main vmstat display:
- use the normal field width of 9 (not 5) for it since there is no shortage
of space. Fix style bugs (excessive {}) in the statement that
conditionally writes it.

Write all reduced field widths for vmstat fields as "9 - <reduction>" as
a hint that we don't want to reduce them.


155656 14-Feb-2006 bde

Fixed style bugs in rev.1.12. Rev.1.12 arranged to display the interrupt
number in more cases by stealing 2 characters from the count field to
give more space in the descriptor field, but it did the column adjustments
for this strangely using an off-by-2 error in the base column and
compensating off-by-2 errors in 6 offsets from the base column (4 new
errors and 2 from not changing the offsets that actually changed).

Print the "Interrupts" header directly at its offset from the base column
instead of spacing it half using the offset and half by printing a space
character.


148580 31-Jul-2005 keramida

Fix all the spelling mistakes I could find in the man pages for words
that have at least 3 characters.

MFC after: 1 week
Thanks to: Music band ``Chingon''
for keeping me company while searching for these.


146650 26-May-2005 keramida

Interlink systat(1), iostat(8) and vmstat(8) through their SEE ALSO
sections, so that users of one can learn about the others easily.


145800 02-May-2005 delphij

Include systat.h for cmdtab, to make gcc4 happy.


144840 09-Apr-2005 stefanf

Remove unused variables.


142175 21-Feb-2005 ps

Fix an overflow when calculating the number of kilobytes from the
number of pages.

Obtained from: Yahoo!


142095 19-Feb-2005 ume

simply ignore unknown address family.

MFC after: 1 week


142093 19-Feb-2005 ume

teach IPv6 to `systat -netstat'.

Tested by: kuriyama
MFC after: 1 week


140420 18-Jan-2005 ru

Sort sections.


131575 04-Jul-2004 stefanf

Consistently use __inline instead of __inline__ as the former is an empty macro
in <sys/cdefs.h> for compilers without support for inline.


131507 03-Jul-2004 ru

Deal with double whitespace.


131491 02-Jul-2004 ru

Mechanically kill hard sentence breaks.


131472 02-Jul-2004 ru

Removed trailing whitespace.


129906 31-May-2004 bmilekic

Bring in mbuma to replace mballoc.

mbuma is an Mbuf & Cluster allocator built on top of a number of
extensions to the UMA framework, all included herein.

Extensions to UMA worth noting:
- Better layering between slab <-> zone caches; introduce
Keg structure which splits off slab cache away from the
zone structure and allows multiple zones to be stacked
on top of a single Keg (single type of slab cache);
perhaps we should look into defining a subset API on
top of the Keg for special use by malloc(9),
for example.
- UMA_ZONE_REFCNT zones can now be added, and reference
counters automagically allocated for them within the end
of the associated slab structures. uma_find_refcnt()
does a kextract to fetch the slab struct reference from
the underlying page, and lookup the corresponding refcnt.

mbuma things worth noting:
- integrates mbuf & cluster allocations with extended UMA
and provides caches for commonly-allocated items; defines
several zones (two primary, one secondary) and two kegs.
- change up certain code paths that always used to do:
m_get() + m_clget() to instead just use m_getcl() and
try to take advantage of the newly defined secondary
Packet zone.
- netstat(1) and systat(1) quickly hacked up to do basic
stat reporting but additional stats work needs to be
done once some other details within UMA have been taken
care of and it becomes clearer to how stats will work
within the modified framework.

From the user perspective, one implication is that the
NMBCLUSTERS compile-time option is no longer used. The
maximum number of clusters is still capped off according
to maxusers, but it can be made unlimited by setting
the kern.ipc.nmbclusters boot-time tunable to zero.
Work should be done to write an appropriate sysctl
handler allowing dynamic tuning of kern.ipc.nmbclusters
at runtime.

Additional things worth noting/known issues (READ):
- One report of 'ips' (ServeRAID) driver acting really
slow in conjunction with mbuma. Need more data.
Latest report is that ips is equally sucking with
and without mbuma.
- Giant leak in NFS code sometimes occurs, can't
reproduce but currently analyzing; brueffer is
able to reproduce but THIS IS NOT an mbuma-specific
problem and currently occurs even WITHOUT mbuma.
- Issues in network locking: there is at least one
code path in the rip code where one or more locks
are acquired and we end up in m_prepend() with
M_WAITOK, which causes WITNESS to whine from within
UMA. Current temporary solution: force all UMA
allocations to be M_NOWAIT from within UMA for now
to avoid deadlocks unless WITNESS is defined and we
can determine with certainty that we're not holding
any locks when we're M_WAITOK.
- I've seen at least one weird socketbuffer empty-but-
mbuf-still-attached panic. I don't believe this
to be related to mbuma but please keep your eyes
open, turn on debugging, and capture crash dumps.

This change removes more code than it adds.

A paper is available detailing the change and considering
various performance issues, it was presented at BSDCan2004:
http://www.unixdaemons.com/~bmilekic/netbuf_bmilekic.pdf
Please read the paper for Future Work and implementation
details, as well as credits.

Testing and Debugging:
rwatson,
brueffer,
Ketrien I. Saihr-Kesenchedra,
...
Reviewed by: Lots of people (for different parts)


128230 14-Apr-2004 bde

Include <sys/proc.h> for the definition of PS_INMEM instead of
depending on namespace pollution in <sys/user.h>.

Reduced nearby include messes.


126775 09-Mar-2004 dwmalone

Fix the easy warnings:

1) Avoid shadowing index.
2) Constness.
3) Missing prototype for ifcmd.
4) Missing include of string.h.
5) Avoid shadowing error function.
6) ANSI definition for main.


126229 25-Feb-2004 bde

Demangled vendor ids. Fixed misplaced FreeBSD id.


126227 25-Feb-2004 bde

Backed out rev.1.6. A bogus include was added to work around breakage of
<netinet/tcp_var.h>'s prerequisites. Prerequistes should not grow for
userland headers, and <netinet/tcp_var.h> is unfortunately still needed
in userland.


125431 04-Feb-2004 ru

Put libdevstat before libkvm, because the former depends on the latter.


123800 24-Dec-2003 silby

Make systat -net aware of compressed time_wait sockets.


121836 01-Nov-2003 tjr

Copy cur's snap_time to last when refreshing statistics. Fixes problem
where MB/s and tps statistics would always be zero, presumably because
they were being averaged out over the time between now and when the
system booted instead of a few seconds.

PR: 58683


121485 24-Oct-2003 phk

Use 'k' as suffix for Kilo

Pointed out by: several.


121291 20-Oct-2003 phk

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.


118318 01-Aug-2003 dwmalone

Add ip6 and icmp6 displays to systat.

MFC after: 2 weeks


113282 09-Apr-2003 phk

Let libdevstat calculate the device-busy % instead of home-rolling.


112288 15-Mar-2003 phk

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


111447 24-Feb-2003 ru

mdoc(7) police: Scheduled sweep.


111007 16-Feb-2003 phk

Add #include <sys/resource.h>


111002 16-Feb-2003 phk

Remove #include <sys/dkstat.h>


109097 11-Jan-2003 dillon

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>


108684 04-Jan-2003 phk

Add "ifstat" display:

ifstat Display the network traffic going through active interfaces
on the system. Idle interfaces will not be displayed until
they receive some traffic.

For each interface being displayed, the current, peak and
total statistics are displayed for incoming and outgoing
traffic. By default, the ifstat display will automatically
scale the units being used so that they are in a human-read-
able format. The scaling units used for the current and peak
traffic columns can be altered by the scale command.

Submitted by: Trent Nelson <trent@arpa.com>


108683 04-Jan-2003 phk

When we close a display, mark it as not-initialized so that we will
properly open it again next time.

Submitted by: Trent Nelson <trent@arpa.com>


108454 30-Dec-2002 mike

Back out rev 1.20; getbsize(3)'s original interface has been restored.

Approved by: markm


108317 27-Dec-2002 schweikh

english(4) police.


105812 23-Oct-2002 markm

Adjust for getbsize argument type change.


105807 23-Oct-2002 markm

Remove unneeded function prototypes.


100591 24-Jul-2002 jdp

Widen struct sockbuf's sb_timeo member to int from short. With
non-default but reasonable values of hz this member overflowed,
breaking NFS over UDP.

Also, as long as I'm plowing up struct sockbuf ... Change certain
members from u_long/long to u_int/int in order to reduce wasted
space on 64-bit machines. This change was requested by Andrew
Gallatin.

Netstat and systat need to be rebuilt. I am incrementing
__FreeBSD_version in case any ports need to change.


100025 15-Jul-2002 keramida

^Z suspends any and all programs that don't do anything special about
it. There's really no reason to explicitly mention it here.

Suggested by: Mark Valentine <mark@thuvia.demon.co.uk>


100010 15-Jul-2002 keramida

^Z doesn't "stop" systat, but it "suspends" it.

PR: docs/40489
Submitted by: Dave McCammon <davemac11@yahoo.com>


97970 06-Jun-2002 des

debug.{numvnodes,freevnodes} moved to vfs.


96247 09-May-2002 joe

Replace /kernel with /boot/kernel/kernel.

PR: docs/37757
Submitted by: Hiten Pandya <hiten@uk.FreeBSD.org>


95124 20-Apr-2002 charnier

Use `The .Nm utility'


94610 13-Apr-2002 dwmalone

Remove previously unneeded and now incorrect cast of user_from_uid()
to a char *.
Fix up vendor ID.


93058 23-Mar-2002 imp

unifdef __STDC__


92922 22-Mar-2002 imp

remove __P


90416 08-Feb-2002 markm

Remove NO_WERRORs and WARNS=n's. To be revisited after GCC3.


87715 12-Dec-2001 markm

WARNS=2 fixes with NO_WERROR set, as there are some header issues
with namelists. use __FBSDID().


87172 01-Dec-2001 markm

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.


86784 22-Nov-2001 jlemon

Add #include <net/route.h> in order to get this to compile.

Spotted by: David Wolfskill
Forgotten by: me


84768 10-Oct-2001 bde

Compensate for "Compensate for header dethreading" by backing it out.


84722 09-Oct-2001 sobomax

Remove greatly outdated comment that systat(1) takes 2-10% of the CPU time.
This isn't true nowadays.


84153 30-Sep-2001 bmilekic

Re-enable mbtypes statistics in the mbuf allocator. I disabled these
when I changed the allocator bits. This implements per-CPU mbtypes
stats by keeping net number of decrements/increments of a given mbtype
per-CPU and then summing all of the per-CPU mbtypes to produce the total
net number of allocated mbufs of the given mbtype.
Counters are carefully balanced to avoid/prevent underflows/overflows.

mbtypes stats are re-enabled with the idea that we may occasionally
(although very rarely) observe slight inconsistencies in the stat
reporting. Most of the time, we should be fine, though.

Also make appropriate modifications to netstat(1) and systat(1) to do
the necessary reporting.

Submitted by: Jiangyi Liu <jyliu@163.net>


83131 06-Sep-2001 ken

Convert systat(1) to use the new devstat interface.

Submitted by: "Sergey A. Osokin" <osa@freebsd.org.ru>


80399 26-Jul-2001 bmilekic

- Do not handle the per-CPU containers in mbuf code as though the cpuids
were indices in a dense array. The cpuids are a sparse set and treat
them as such, setting up containers only for CPUs activated during
mb_init().

- Fix netstat(1) and systat(1) to treat the per-CPU stats area as a sparse
map, in accordance with the above.

This allows us to properly boot with certain CPUs disactivated. However, if
we later decide to re-activate said CPUs, we will barf until we decide to
implement CPU spinon/spinoff callback hooks to allow for said CPUs' per-CPU
containers to get configured on their activation.

Reported by: mjacob
Partially (sys/ diffs) Submitted by: mjacob


79755 15-Jul-2001 dd

Remove whitespace at EOL.


79535 10-Jul-2001 ru

mdoc(7) police: removed HISTORY info from the .Os call.


79366 06-Jul-2001 ru

mdoc(7) police: sort SEE ALSO xrefs (sort -b -f +2 -3 +1 -2).


78664 23-Jun-2001 bmilekic

Make sure to try hw.ncpu if kern.smp.cpus doesn't exist (i.e. on UP) when
getting number of CPUs.


78592 22-Jun-2001 bmilekic

Introduce numerous SMP friendly changes to the mbuf allocator. Namely,
introduce a modified allocation mechanism for mbufs and mbuf clusters; one
which can scale under SMP and which offers the possibility of resource
reclamation to be implemented in the future. Notable advantages:

o Reduce contention for SMP by offering per-CPU pools and locks.
o Better use of data cache due to per-CPU pools.
o Much less code cache pollution due to excessively large allocation macros.
o Framework for `grouping' objects from same page together so as to be able
to possibly free wired-down pages back to the system if they are no longer
needed by the network stacks.

Additional things changed with this addition:

- Moved some mbuf specific declarations and initializations from
sys/conf/param.c into mbuf-specific code where they belong.
- m_getclr() has been renamed to m_get_clrd() because the old name is really
confusing. m_getclr() HAS been preserved though and is defined to the new
name. No tree sweep has been done "to change the interface," as the old
name will continue to be supported and is not depracated. The change was
merely done because m_getclr() sounds too much like "m_get a cluster."
- TEMPORARILY disabled mbtypes statistics displaying in netstat(1) and
systat(1) (see TODO below).
- Fixed systat(1) to display number of "free mbufs" based on new per-CPU
stat structures.
- Fixed netstat(1) to display new per-CPU stats based on sysctl-exported
per-CPU stat structures. All infos are fetched via sysctl.

TODO (in order of priority):

- Re-enable mbtypes statistics in both netstat(1) and systat(1) after
introducing an SMP friendly way to collect the mbtypes stats under the
already introduced per-CPU locks (i.e. hopefully don't use atomic() - it
seems too costly for a mere stat update, especially when other locks are
already present).
- Optionally have systat(1) display not only "total free mbufs" but also
"total free mbufs per CPU pool."
- Fix minor length-fetching issues in netstat(1) related to recently
re-enabled option to read mbuf stats from a core file.
- Move reference counters at least for mbuf clusters into an unused portion
of the cluster itself, to save space and need to allocate a counter.
- Look into introducing resource freeing possibly from a kproc.

Reviewed by (in parts): jlemon, jake, silby, terry
Tested by: jlemon (Intel & Alpha), mjacob (Intel & Alpha)
Preliminary performance measurements: jlemon (and me, obviously)
URL: http://people.freebsd.org/~bmilekic/mb_alloc/


77583 01-Jun-2001 tmm

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.


77515 31-May-2001 ru

Display -tcp w/o load average so that all statistics fits on a 80x25 screen.


77514 31-May-2001 ru

Show TCP checksum failures with -tcp display.

PR: bin/27786
Submitted by: Brooks Davis <brooks@one-eyed-alien.net>


77206 25-May-2001 kris

Mark error() as __printflike() and fix a non-exploitable format string
error.

MFC after: 1 week


77205 25-May-2001 tmm

Fix the error buffer passed to kvm_openfiles to have a length of
_POSIX2_LINE_MAX as required.
While being there, wrap an overly long line.

MFC after: 3 days


76812 18-May-2001 ru

Removed -I${.CURDIR}/.../sys from CFLAGS.


76169 01-May-2001 markm

Compensate for header dethreading.


74978 29-Mar-2001 gallatin

numdirtybuffers is an int, not a long.


74671 23-Mar-2001 tmm

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


74595 21-Mar-2001 ache

Don't attempt to parse %c


74209 13-Mar-2001 ru

Count and show incoming UDP datagrams with no checksum.


71895 01-Feb-2001 ru

mdoc(7) police: split punctuation characters + misc fixes.


71588 24-Jan-2001 jhb

Catch up to new proc flags.


70526 30-Dec-2000 phk

My bad, committed the submitted patch rather than the fixed patch.


70523 30-Dec-2000 phk

Use macro API to <sys/queue.h>

Submitted by: "Jason" <jsmethers@pdq.net>
Reviewed by: phk


70197 19-Dec-2000 ru

Prepare for mdoc(7)NG.


70118 17-Dec-2000 rwatson

o Fix up includes which built due to excessive nested including in the
base system, but not in BruceBSD.
o Fix up style violations of various sorts.
o Remove redundant normalization of hertz variable, as the sysctl handler
does this work (unlike when kread was used).

Submitted by: bde


69896 12-Dec-2000 mckusick

Change the proc information returned from the kernel so that it
no longer contains kernel specific data structures, but rather
only scalar values and structures that are already part of the
kernel/user interface, specifically rusage and rtprio. It no
longer contains proc, session, pcred, ucred, procsig, vmspace,
pstats, mtx, sigiolst, klist, callout, pasleep, or mdproc. If
any of these changed in size, ps, w, fstat, gcore, systat, and
top would all stop working. The new structure has over 200 bytes
of unassigned space for future values to be added, yet is nearly
100 bytes smaller per entry than the structure that it replaced.


69529 02-Dec-2000 gallatin

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


69493 01-Dec-2000 gallatin

fix another int/long type mismatch. This one was causing pigs to
die with an fpe on alpha because fscale wasn't properly initted


69492 01-Dec-2000 gallatin

fix int/long type mismatches found on alpha


69143 25-Nov-2000 rwatson

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.


69142 25-Nov-2000 rwatson

o make systat/pigs.c use syctl() to retrieve cp_time, fscale, and ccpu
instead of using kmem.


69141 25-Nov-2000 rwatson

o Make systat/iostat.c use sysctl() to retrieve cp_time instead of
kmem.


69140 25-Nov-2000 rwatson

o Make systat use sysctl() to retrieve hz and stathz, instead of
using kmem.


68963 20-Nov-2000 ru

mdoc(7) police: use the new features of the Nm macro.


67870 29-Oct-2000 jedgar

Remove obsolete /dev/drum references

Reviewed by: alex, asmodai, billf


65910 16-Sep-2000 ache

Remove unneded -ltermcap


65062 24-Aug-2000 peter

Quick Fix: swap.c doesn't appear to actually need <sys/conf.h>, so remove
it to try and get world building again. (sys/conf.h now depends on
sys/types.h)


63226 15-Jul-2000 alfred

Fix systat to use the kern.ipc.mbtypes sysctl instead of referencing a
structure member that doesn't exist anymore.
Use getsysctlbyname for kern.ipc.mbstat instead of sysctl.
Use netstat's method of displaying values from mtnames.

Submitted by: Ian Dowse <iedowse@maths.tcd.ie>
Missed by PR: 19809


61148 01-Jun-2000 phk

Duh! get the scaling right.


61147 01-Jun-2000 phk

Rescale the IOstat bars, modern disks are faster than old disks.


60049 05-May-2000 phk

Don't include <sys/buf.h>


59217 14-Apr-2000 imp

#include <errno.h> where needed. Kill extern int errno;.

Minor warnings in tip corrected.


57695 02-Mar-2000 sheldonh

Remove more single-space hard sentence breaks.


57665 01-Mar-2000 nik

s/curses/ncurses/

PR: docs/17061
Submitted by: Udo Erdelhoff <ue@nathan.ruhr.de>


51421 19-Sep-1999 green

"Disks" is more correct than "Disks" could be.


50635 30-Aug-1999 peter

systat is way too comfortable with curses internals...


50477 28-Aug-1999 peter

$Id$ -> $FreeBSD$


49738 14-Aug-1999 chris

Fix bad references:
vmstat(1) -> vmstat(8)
iostat(1) -> iostat(8)


49245 30-Jul-1999 des

Show dirty buffers and the percentage of time a disk was busy.

PR: 12858
Submitted by: Arjan de Vet <Arjan.deVet@adv.iae.nl>


48792 12-Jul-1999 nik

Add $Id$, to make it simpler for members of the translation teams to
track.

The $Id$ line is normally at the bottom of the main comment block in the
man page, separated from the rest of the manpage by an empty comment,
like so;

.\" $Id$
.\"

If the immediately preceding comment is a @(#) format ID marker than the
the $Id$ will line up underneath it with no intervening blank lines.
Otherwise, an additional blank line is inserted.

Approved by: bde


47018 11-May-1999 peter

Tidy up references to <sys/rlist.h> and support for the old swap management
that went away in January.


44935 22-Mar-1999 bde

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.


43757 08-Feb-1999 dillon

Include discrete ozfod as well as ozfod/zfod percentage.


43756 08-Feb-1999 dillon

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.


43698 06-Feb-1999 dillon

Be nice when no swap is configured in system


43050 22-Jan-1999 dillon

Fix labeling bug


43047 22-Jan-1999 dillon

Make systat -swap use new kvm_swapinfo() function


42425 09-Jan-1999 obrien

revert to rev 1.29. (floppy drives will be gotten rid of another way)


42106 27-Dec-1998 obrien

Add copyright and RCS/CVS Id.

Noticed by: ken


42105 27-Dec-1998 obrien

Update section on DK_NDRIVES (which was removed with CAM), and explain
relation to devstat(3)/(9).

Submitted-by: ken@freebsd.org


42094 27-Dec-1998 obrien

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


42072 27-Dec-1998 obrien

Don't waste precious space on showing the performance of fdX.
(can get old behavior with -DWANT_FD)


40060 08-Oct-1998 obrien

Quiet many compiler warnings.


39967 05-Oct-1998 ken

Fix a core-dump situation in ":boot" mode in the vmstat display.

Reported by: bde


39498 20-Sep-1998 ken

Change the devstat generation number from an int to a long. The int-sized
generation was causing unaligned access faults on the Alpha.

I have incremented the devstat version number, since this is an interface
change. You'll need to recompile libdevstat, systat, iostat, vmstat and
rpc.rstatd along with your kernel.

Partially Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>


39318 16-Sep-1998 ken

Delete unused code. This has been obsoleted by the new devstat code.

Reviewed by: imp


39261 15-Sep-1998 gibbs

Reference new files for device stat support.


39230 15-Sep-1998 gibbs

Update system to new device statistics code.

Submitted by: "Kenneth D. Merry" <ken@plutotech.com>


38966 09-Sep-1998 jkoshy

Add missing comma.

PR: 7841
Submitted by: NOKUBI Hirotaka <hnokubi@yyy.or.jp>


37455 06-Jul-1998 bde

Fixed type mismatches which were fatal when sizeof(long) > sizeof(int).


37159 25-Jun-1998 ghelmer

Update vmstat portion of man page to reflect the statistics currently
shown by systat's vmstat display.
PR: docs/3764


36916 12-Jun-1998 peter

#include <arpa/inet.h>


36789 09-Jun-1998 imp

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


36430 27-May-1998 jhay

Correctly display the interrupt counts.
Reviewed with optimizations by: Tor Egge <tegge>


31522 04-Dec-1997 steve

Use 'proto <tcp|udp|all>' to select the protocol to display
in netstat-mode to avoid a conflict with tcp-mode. Also
while documenting this new feature in the manpage, fix a
minor display nit.

PR: 5159
Submitted by: Sergei Chechetkin <csl@whale.sunbay.crimea.ua>


31226 18-Nov-1997 jdp

Fix: too many arguments for format in call to sprintf().


29988 29-Sep-1997 wosch

Sort cross refereces in section SEE ALSO.


29881 27-Sep-1997 wollman

Having done ICMP, UDP, and IP, could a TCP display be far behind?


29842 25-Sep-1997 peter

Show size of vnode pool in vmstat mode.


29839 25-Sep-1997 wollman

Emboldened by the success of yesterday's ICMP statistics display,
I've now added one that does IP (and also UDP) statistics.


29759 24-Sep-1997 wollman

Add a mode to display ICMP statistics.

Inspired by: IRIX netstat -C


28789 26-Aug-1997 charnier

Main() returns int.


28149 13-Aug-1997 charnier

Use err(3). /sys/dkstat.h -> /usr/include/sys/dkstat.h


27232 06-Jul-1997 bde

Merge from Lite2 (print "??" instead NULL if devname() fails). More
faithful stealing from pstat would have given this already.


27231 06-Jul-1997 bde

Importing Lite2 broke lookup() to return -1 for the nmatches == 0 case.
Fixed.


27230 06-Jul-1997 bde

This commit was generated by cvs2svn to compensate for changes in r27229,
which included commits to RCS files with non-trunk default branches.


23087 24-Feb-1997 wollman

Use new sysctl(3) interface to mbuf statistics. While we're at it,
count free mbufs correctly.


23012 22-Feb-1997 peter

Revert $FreeBSD$ to $Id$


22768 15-Feb-1997 obrien

The screen layout of the lefthand side for the vmstat display was way off.
(based on my running it on 2.2-GAMMA)


21673 14-Jan-1997 jkh

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


21617 12-Jan-1997 joerg

Fix the following old problem:

date: 1994/10/09 07:37:18; author: davidg; state: Exp; lines: +7 -1
#if 0'd out the meat of the swap code until I get a chance to rewrite it.

...mainly by stealing the code from pstat(8).


19687 12-Nov-1996 jkh

Now that systat's working again, bring the vmstat cleanup over from
-stable.


19598 10-Nov-1996 bde

Initialize interrupt counters. The boot time values were displayed as ***.

Should be in 2.2.

Pointed out by: /etc/malloc.conf -> AJ


19330 02-Nov-1996 phk

bin/1942 curses problem in systat
truncate if too long for field.
2.2 candidate.


19234 28-Oct-1996 wollman

Eliminate unnecessary include of <sys/mbuf.h>.


18486 24-Sep-1996 bde

Really eliminated includes of the "temporary" backwards compatibility
header <sys/dir.h> in applications. My previous sweep didn't find the
places that included it without needing it.


18050 05-Sep-1996 bde

Fixed DPADD.


16301 11-Jun-1996 jkh

Cosmetic fixes for drive names which are 4 chars long.
Submitted-By: Joe Greco <jgreco@ns.sol.net>


15938 27-May-1996 jdp

Fix a bug in the mbufs display, seen when there was a large number
of mbufs in use. If the number reached, e.g., 4 digits, then later
decreased to 3 digits, the last digit of the 4-digit number was
not erased. This caused the display to show a wildly high number of
mbufs in use.


14953 31-Mar-1996 ache

Localize time


14918 29-Mar-1996 bde

Renamed Proc-cache to Dir-cache for the same reasons as in vmstat.
Tweaked screen positions to match.


14543 11-Mar-1996 dg

Move #include of queue.h before #include of socketvar.h in preparation for
struct socket changes.


13511 20-Jan-1996 mpp

Fix a variety of minor typos and cross references in a bunch of
man pages.

Masanobu Saitoh <msaitoh@spa.is.uec.ac.jp>
Giles Lean <giles@nemeton.com.au>
<soda@sra.co.jp>


12811 13-Dec-1995 bde

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.


12805 13-Dec-1995 peter

Add explicit #include of <sys/vmmeter.h> after the last round of <vm/vm.h>
changes.


11914 29-Oct-1995 phk

#include <sys/user.h>


9501 12-Jul-1995 bde

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.


8874 30-May-1995 rgrimes

Remove trailing whitespace.


7715 09-Apr-1995 dg

Updated for 4.4BSD queue macros. (Oops, I forgot to commit this last night;
sorry Jordan).


7455 29-Mar-1995 dg

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


7351 25-Mar-1995 dg

Removed object lookup/hit count and changed the order of things a little.


7348 25-Mar-1995 dg

Removed cnt.v_nzfod...we don't support it in the kernel.


7138 18-Mar-1995 phk

Fix the Name-cache counters. I didn't realign the negative hits.


7012 12-Mar-1995 phk

Report the negative hits in the Namei section.


7011 12-Mar-1995 phk

Don't use curses until initialized.


6988 10-Mar-1995 dg

Changes to support printing stats for the 'cached pages'.

Submitted by: John Dyson


4930 03-Dec-1994 bde

extern.h, iostat.c, main.c, vmstat.c:
Use the correct value of hz (stathz if it is nonzero) for
interpretion of dk_time[] and cp_time[] in iostat.c. Avoid
multiple conversions of this value in iostat.c and vmstat.c

iostat.c:
Implement the display of cp_time[CP_INTR]. Fix the display
of cp_time[CP_IDLE] (the display was always null because
cp_time[CP_INTR] == 0 was displayed instead).

systat.1:
Document the display of cp_time[CP_INTR].

vmstat.c:
Implement the display of cp_time[CP_INTR].


4808 25-Nov-1994 dg

Moved "VMSTAT" column up by one row so that it displays properly on 24
row displays.


4723 21-Nov-1994 phk

Another absolute path...


3717 19-Oct-1994 ache

Prevents segm. fault on unknown option


3694 18-Oct-1994 dg

Updated to changes in struct vmmeter.


3642 16-Oct-1994 wollman

New way of getting disk drive names.


3614 15-Oct-1994 dg

Updated to changes in struct vmmeter.


3452 09-Oct-1994 dg

#if 0'd out the meat of the swap code until I get a chance to rewrite it.


3375 05-Oct-1994 dg

Changes to buf.h now require that param.h be included.


3041 24-Sep-1994 wollman

Get rid of _PATH_UNIX completely; use getbootfile(3) instead.

DANGER WILL ROBINSON!
_PATH_UNIX is currently defined as the literal string "don't use this".
I am of two minds about this myself, but wanted to get something into the
tree as quickly as possible.


1893 07-Aug-1994 wollman

Make the %zfod display make more sense by comparing zfod versus the total
zfod + nzfod, rather than zfod / nzfod, which doesn't make a whole lot of sense.


1856 05-Aug-1994 dg

Converted 'vmunix' to 'kernel'.


1636 30-May-1994 rgrimes

Add i386 support, and reorder machine #ifdefs to be in alphanumeric order.


1591 27-May-1994 rgrimes

This commit was generated by cvs2svn to compensate for changes in r1590,
which included commits to RCS files with non-trunk default branches.