]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Run a revision of the devstat interface:
authorPoul-Henning Kamp <phk@FreeBSD.org>
Sat, 15 Mar 2003 21:59:06 +0000 (21:59 +0000)
committerPoul-Henning Kamp <phk@FreeBSD.org>
Sat, 15 Mar 2003 21:59:06 +0000 (21:59 +0000)
commit7194d335cfa65141113997cdc4ac01fe9c4504c1
treec322a33c0275fefd9ca33cd377e3d6f459cb9a8c
parent0c61d694a810b1a9d361f7414576ff1afdde28a9
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
12 files changed:
lib/libdevstat/Makefile
lib/libdevstat/devstat.c
lib/libdevstat/devstat.h
libexec/rpc.rstatd/rstat_proc.c
sys/cam/cam_periph.c
sys/kern/subr_devstat.c
sys/sys/devicestat.h
sys/sys/param.h
usr.bin/systat/iostat.c
usr.bin/systat/vmstat.c
usr.bin/vmstat/vmstat.c
usr.sbin/iostat/iostat.c