History log of /freebsd-10.1-release/lib/libdevstat/devstat.c
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 272461 02-Oct-2014 gjb

Copy stable/10@r272459 to releng/10.1 as part of
the 10.1-RELEASE process.

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

# 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


# 244270 15-Dec-2012 trociny

New devstat metrics for devstat_compute_statistics():

DSM_TOTAL_DURATION
DSM_TOTAL_DURATION_READ
DSM_TOTAL_DURATION_WRITE
DSM_TOTAL_DURATION_FREE
DSM_TOTAL_DURATION_OTHER
DSM_TOTAL_BUSY_TIME


# 229735 06-Jan-2012 ghelmer

Handle memory allocation failures in devstat_getdevs(), devstat_selectdevs(),
and devstat_buildmatch().

PR: bin/83359
Reviewed by: ken


# 220319 04-Apr-2011 pluknet

Do not increment num_args if strsep(3) returned an empty field.
That fixes devstat_buildmatch(3) crashes with certain strings.

Reported by: arundel
MFC after: 2 weeks


# 150948 04-Oct-2005 stefanf

Remove an unused variable.

Reviewed by: ken


# 145553 26-Apr-2005 mux

Use __func__ throughout devstat.c instead of defining a func_name
variable in each function.


# 145549 26-Apr-2005 mux

Make this compile with GCC4 by fixing a signedness issue.

Reviewed by: md5(1)


# 131075 24-Jun-2004 kan

Remove the use of cast as lvalue. GCC 3.4 isses a deprecation warning
for this now.


# 121064 13-Oct-2003 bde

Include <nlist.h> for nlist-related declarations instead of depending on
namespace pollution in <kvm.h>.


# 119029 17-Aug-2003 phk

It is not an error to have no devices.


# 113710 19-Apr-2003 phk

Add prototype for compute_stats() so that libdevstat is WARNS=4 clean.

Spotted by: kris


# 113281 09-Apr-2003 phk

If rounding results in -epsilon device busy %, set it to zero.


# 112406 19-Mar-2003 phk

typo


# 112405 19-Mar-2003 phk

Further unbreak devstat: sort the index array in correct order too.


# 112373 18-Mar-2003 phk

Add more devstat calculations, mostly filling in holes, but also adding
a couple of reqests: DSM_BUSY_PCT and DSM_QUEUE_LENGTH.

I have no further plans for mutilating this API at this point in
time, and will update the man-page to reflect current reality as
the next thing.

Reviewed by: ken


# 112293 15-Mar-2003 phk

And I managed to make a regression here too.

I have too many source trees :-(


# 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


# 111000 16-Feb-2003 phk

Remove include of <sys/dkstat.h>


# 110998 16-Feb-2003 phk

Premptively include <sys/resource.h> to get the cp_time[CPUSTATES].


# 92913 21-Mar-2002 obrien

Remove 'register' keyword.


# 83868 23-Sep-2001 ken

Turn on WARNS?= 2 for libdevstat.

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


# 83551 16-Sep-2001 dillon

Implement __FBSDID()


# 82028 21-Aug-2001 ken

Fix some style inconsistencies introduced in rev 1.10, as well as some
other inconsistencies that I missed in my review of rev 1.7. Also fix
a cut-n-paste error from an earlier revision.


# 81984 20-Aug-2001 brian

Better snprintf() handling.

Prompted by: bde


# 81972 20-Aug-2001 brian

Handle snprintf() returning -1.

MFC after: 2 weeks


# 81883 18-Aug-2001 ken

Implement compute_stats() in terms of devstat_compute_statistics(). This
gets rid of the duplicated code in compute_stats().

Add a new DSM_SKIP statistic type for devstat_compute_statistics() that
causes the subsequent variable argument to be skipped.

Thanks to Sergey Osokin for coding up my idea/code fragment.

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


# 81133 04-Aug-2001 tmm

Add some features to libdevstat, and overhaul the interface a bit:

1.) prefix all functions in the library with devstat_ (compatability
functions are available for all functions that were chaned in an
incompatible way, but are deprecated).
2.) Add a pointer to a kvm_t as the first argument to functions that
used to get their information via sysctl; they behave the same
as before when NULL is passed as this argument, otherwise, the
information is obtained via libkvm using the supplied handle.
3.) Add a new function, devstat_compute_statistics(), that is intended
to replace the old compute_stats() function. It offers more
statistics data, and has a more flexible interface.

libdevstat does now require libkvm; a library depedency is added, so
that libkvm only needs to be explicitely specified for statically linked
programs.
The library major version number is bumped.

Submitted by: Sergey A. Osokin <osa@freebsd.org.ru>, ken (3)
Reviewed by: ken


# 50476 27-Aug-1999 peter

$Id$ -> $FreeBSD$


# 44936 22-Mar-1999 phk

Address our users in a civilized manner. (They may know better, but probably
just forgot it, it is certainly no reason to don't insult them.)


# 40364 14-Oct-1998 ken

Fix a couple of potential buffer overrun cases.

Submitted by: imp


# 39498 19-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>


# 39451 18-Sep-1998 ken

Fix some error message format problems in checkversion() and getversion().

Reported By: bde


# 39211 15-Sep-1998 gibbs

Device statistics library. Used by iostat, vmstat, and systat to
format and analyze the output of the new device statistics sysctls.

Submitted by: "Kenneth D. Merry" <ken@FreeBSD.org>