History log of /freebsd-current/lib/libdevstat/devstat.c
Revision Date Author Comments
# a2f733ab 24-Nov-2023 Warner Losh <imp@FreeBSD.org>

lib: Automated cleanup of cdefs and other formatting

Apply the following automated changes to try to eliminate
no-longer-needed sys/cdefs.h includes as well as now-empty
blank lines in a row.

Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/
Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/
Remove /\n+#if.*\n#endif.*\n+/
Remove /^#if.*\n#endif.*\n/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/

Sponsored by: Netflix


# d282badd 15-Nov-2023 Alexander Motin <mav@FreeBSD.org>

Add interface NVME to devstat

This allows to list only NVMe devices in systat, iostat, vmstat, etc.
Previously those were counted as OTHER.


# 1d386b48 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line .c pattern

Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/


# 84a03ac6 03-Dec-2019 Andriy Gapon <avg@FreeBSD.org>

devstat_selectdevs: resize dev_select only after copying data out of it

The resizing could be a downsizing so some data would be lost and we
could attempt to read past the end of the new memory allocation.

MFC after: 2 weeks
Sponsored by: Panzura


# 5e53a4f9 25-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

lib: further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using mis-identified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.


# 58c8c852 03-Jun-2015 Marcelo Araujo <araujo@FreeBSD.org>

Remove unused variable and silence clang warnings.

Differential Revision: D2681
Reviewed by: rodrigc


# 999efd90 26-Feb-2015 Kenneth D. Merry <ken@FreeBSD.org>

Remove an obsolete comment in devstat(3) about the accuracy of the
milliseconds per transaction (DSM_MS_PER_TRANSACTION) calculation.

The comment was accurate many years ago when the kernel didn't
record I/O times on a per-I/O basis, but now that we do collect
that information in most areas, it isn't correct.

The milliseconds per transaction values are correct, assuming the
I/O duration has been recorded.

Sponsored by: Spectra Logic
MFC after: 3 days


# 6a4d9095 25-Dec-2013 Sergey Kandaurov <pluknet@FreeBSD.org>

Fix a typo.


# ef6b3fcf 25-Dec-2013 Sergey Kandaurov <pluknet@FreeBSD.org>

For vmcore, calculate time relative to device creation upon time_uptime.
Previously it used a clock from live kernel.

MFC after: 2 weeks


# fdd6757e 15-Dec-2012 Mikolaj Golub <trociny@FreeBSD.org>

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


# a18e4616 06-Jan-2012 Guy Helmer <ghelmer@FreeBSD.org>

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

PR: bin/83359
Reviewed by: ken


# 1046090f 04-Apr-2011 Sergey Kandaurov <pluknet@FreeBSD.org>

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


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# fe0506d7 09-Mar-2010 Marcel Moolenaar <marcel@FreeBSD.org>

Create the altix project branch. The altix project will add support
for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting
is a two-module system, consisting of a base compute module and a
CPU expansion module. SGI's NUMAFlex architecture can be an excellent
platform to test CPU affinity and NUMA-aware features in FreeBSD.


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# 9dbcd4b0 04-Oct-2005 Stefan Farfeleder <stefanf@FreeBSD.org>

Remove an unused variable.

Reviewed by: ken


# 7d72cda3 26-Apr-2005 Maxime Henrion <mux@FreeBSD.org>

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


# 140490e2 26-Apr-2005 Maxime Henrion <mux@FreeBSD.org>

Make this compile with GCC4 by fixing a signedness issue.

Reviewed by: md5(1)


# f664b76f 24-Jun-2004 Alexander Kabaev <kan@FreeBSD.org>

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


# 1f85f715 12-Oct-2003 Bruce Evans <bde@FreeBSD.org>

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


# d2d0b144 16-Aug-2003 Poul-Henning Kamp <phk@FreeBSD.org>

It is not an error to have no devices.


# 0b1b370c 19-Apr-2003 Poul-Henning Kamp <phk@FreeBSD.org>

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

Spotted by: kris


# 1455c4e2 09-Apr-2003 Poul-Henning Kamp <phk@FreeBSD.org>

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


# ec0fa09c 19-Mar-2003 Poul-Henning Kamp <phk@FreeBSD.org>

typo


# 773865de 19-Mar-2003 Poul-Henning Kamp <phk@FreeBSD.org>

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


# 36eab1f5 18-Mar-2003 Poul-Henning Kamp <phk@FreeBSD.org>

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


# 16830b0c 15-Mar-2003 Poul-Henning Kamp <phk@FreeBSD.org>

And I managed to make a regression here too.

I have too many source trees :-(


# 7194d335 15-Mar-2003 Poul-Henning Kamp <phk@FreeBSD.org>

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


# cd9c9ca6 16-Feb-2003 Poul-Henning Kamp <phk@FreeBSD.org>

Remove include of <sys/dkstat.h>


# 12590690 16-Feb-2003 Poul-Henning Kamp <phk@FreeBSD.org>

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


# be04b6d1 21-Mar-2002 David E. O'Brien <obrien@FreeBSD.org>

Remove 'register' keyword.


# c3508206 23-Sep-2001 Kenneth D. Merry <ken@FreeBSD.org>

Turn on WARNS?= 2 for libdevstat.

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


# e67f5b9f 16-Sep-2001 Matthew Dillon <dillon@FreeBSD.org>

Implement __FBSDID()


# 4fb9d384 20-Aug-2001 Kenneth D. Merry <ken@FreeBSD.org>

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.


# 6d3e1426 20-Aug-2001 Brian Somers <brian@FreeBSD.org>

Better snprintf() handling.

Prompted by: bde


# 2449bf28 19-Aug-2001 Brian Somers <brian@FreeBSD.org>

Handle snprintf() returning -1.

MFC after: 2 weeks


# 884539f7 17-Aug-2001 Kenneth D. Merry <ken@FreeBSD.org>

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>


# c4a5ef6e 04-Aug-2001 Thomas Moestl <tmm@FreeBSD.org>

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


# 7f3dea24 27-Aug-1999 Peter Wemm <peter@FreeBSD.org>

$Id$ -> $FreeBSD$


# 057cfd17 22-Mar-1999 Poul-Henning Kamp <phk@FreeBSD.org>

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.)


# 17ee2b20 14-Oct-1998 Kenneth D. Merry <ken@FreeBSD.org>

Fix a couple of potential buffer overrun cases.

Submitted by: imp


# bcc6a3da 19-Sep-1998 Kenneth D. Merry <ken@FreeBSD.org>

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>


# eded794a 17-Sep-1998 Kenneth D. Merry <ken@FreeBSD.org>

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

Reported By: bde


# 28fb27ba 15-Sep-1998 Justin T. Gibbs <gibbs@FreeBSD.org>

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>