mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-07 13:14:51 +00:00
7194d335cf
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 |
||
---|---|---|
.. | ||
compat | ||
csu | ||
libalias | ||
libatm | ||
libbind | ||
libbz2 | ||
libc | ||
libc_r | ||
libcalendar | ||
libcam | ||
libcom_err | ||
libcompat | ||
libcrypt | ||
libdevinfo | ||
libdevstat | ||
libdisk | ||
libedit | ||
libexpat | ||
libfetch | ||
libform | ||
libftpio | ||
libgeom | ||
libio | ||
libipsec | ||
libipx | ||
libisc | ||
libkse | ||
libkvm | ||
libmd | ||
libmenu | ||
libmilter | ||
libmp | ||
libncp | ||
libncurses | ||
libnetgraph | ||
libopie | ||
libpam | ||
libpanel | ||
libpcap | ||
libpthread | ||
libradius | ||
librpcsvc | ||
libsbuf | ||
libsm | ||
libsmb | ||
libsmdb | ||
libsmutil | ||
libstand | ||
libtacplus | ||
libtelnet | ||
libufs | ||
libugidfw | ||
libusbhid | ||
libutil | ||
libvgl | ||
libwrap | ||
libxpg4 | ||
liby | ||
libypclnt | ||
libz | ||
msun | ||
ncurses | ||
Makefile | ||
Makefile.inc |