Commit Graph

10 Commits

Author SHA1 Message Date
Robert Watson
ca108fe268 UMA supports "secondary" zones, in which a second zone can be layered
on top of a primary zone, sharing the same allocation "keg".  When
reporting statistics for zones, do not report the free items in the
keg as part of the free items in the zone, or those free items will
be reported more than once: for the primary zone, and then any
secondary zones off the primary zone.  Separately record and maintain
a kegfree statistic, and export via memstat_get_kegfree(), which is
available for use if needed.  Since items free'd back to the keg are
not fully initialized, and hence may not actually be available (since
secondary zone ctor-time initialization can fail), this makes some
amount of sense.

This change corrects a bug made visible in the libmemstat(3)
modifications to netstat: mbufs freed back to the keg from the
packet zone would be counted twice, resulting in negative values
being printed in the mbuf free count.

Some further refinement of reporting relating to secondary zones may
still be required.

Reported by:	ssouhlal
MFC after:	3 days
2005-07-20 09:17:40 +00:00
Robert Watson
919bddddb6 Bump MEMSTAT_MAXCALLER to 16. memtop(8) seems to be able to happily
consume that many slots to track snapshot-to-snapshot changes and
running totals.  And 16 is a nice round number.

MFC after:	1 week
2005-07-18 14:14:17 +00:00
Robert Watson
449ce0e42f Add __BEGIN_DECLS and __END_DECLS to make libmemstat(3) more C++-friendly.
MFC after:	1 week
2005-07-17 13:54:46 +00:00
Robert Watson
d144359bde Teach libmemstat(3) about UMA(9) failure statistics.
Requested by:	victor cruceru <victor dot cruceru at gmail dot com>
MFC after:	1 week
2005-07-15 23:39:21 +00:00
Robert Watson
e86bb57bbf Provide more documentation on caller-owned storage in struct memory_type,
as well as documenting MEMSTAT_MAXCALLER.

MFC after:	1 week
2005-07-15 11:28:21 +00:00
Robert Watson
ccf4e07e83 Increase the number of caller memory storage slots from 2 or 4 to
MEMSTAT_MAXCALLER (8), and expose MEMSTAT_MAXCALLER via memstat.h so
that applications can check their assumptions about how many slots
are available.

Remove 'spare' memory storage in struct malloc_type, since we now
don't expose the data structure internals to applications and rely
on accessor methods, this approach to ABI stability isn't required.

MFC after:	7 days
2005-07-15 11:19:55 +00:00
Robert Watson
09df0a9a09 Add a section on the allocator name space and its interactions with
memstat_mtl_find().

MFC after:	10 days
2005-07-15 10:23:55 +00:00
Robert Watson
3ab4da680f Re-spell wronge less wrongly as wrong.
Submitted by:	jkoshy
MFC after:	1 week
2005-07-15 10:13:50 +00:00
Robert Watson
37b40e499e Properly combine per-CPU UMA cache allocation and free counts with the
global counters maintained in the zone.

MFC after:	1 week
2005-07-14 20:01:04 +00:00
Robert Watson
0cddce4989 Add libmemstat(3), a library for use by debugging and monitoring
applications in tracking kernel memory statistics.  It provides an
abstracted interface to uma(9) and malloc(9) statistics, wrapped
around the recently added binary stream sysctls for the allocators.

Using this interface, it is easy to build monitoring tools, query
specific memory types for usage information, etc.  Facilities are
provided for binding caller-provided data to memory types,
incremental updates of memory types, and queries that span multiple
allocators.

Support for additional allocators is (relatively) easy to add.

The API for libmemstat(3) will probably change some over time as
consumers are written, and requirements evolve.  It is written to
avoid encoding ABIs for data structure layout into consuming
applications for this reason.

MFC after:	1 week
2005-07-14 17:40:02 +00:00