opnsense-src/lib
Jason Evans bb99793a2b Use extents rather than binary buddies to track free pages within
chunks.  This allows runs to be any multiple of the page size.  The
primary advantage is that large objects are no longer constrained to be
2^n pages, which can dramatically decrease internal fragmentation for
large objects.  This also allows the sizes for runs that back small
objects to be more finely tuned.

Free runs are searched for linearly using the chunk page map (with the
help of some heuristic optimizations).  This changes the allocation
policy from "first best fit" to "first fit".  A prototype red-black tree
implementation for tracking free runs that implemented "first best fit"
did not cause a measurable speed or memory usage difference for
realistic chunk sizes (though of course it is possible to construct
benchmarks that favor one allocation policy over another).

Refine the handling of fullness constraints for small runs to be more
tunable.

Restructure the per chunk page map to contain only two fields per entry,
rather than four.  Also, increase each entry from 4 to 8 bytes, since it
allows for 32-bit integers, without increasing the number of chunk
header pages.

Relax the maximum chunk size constraint.  This is of no practical
interest; it is merely fallout from the chunk page map restructuring.

Revamp statistics gathering and reporting to be faster, clearer and more
informative.  Statistics gathering is fast enough now to have little
to no impact on application speed, but it still requires approximately
two extra pages of memory per arena (per process).  This memory overhead
may be acceptable for most systems, but we still need to leave
statistics gathering disabled by default in RELENG branches.

Rename NO_MALLOC_EXTRAS to MALLOC_PRODUCTION in order to make its intent
clearer (i.e. it should be defined in RELENG branches).
2007-03-23 05:05:48 +00:00
..
bind Update generated files for BIND 9.3.4 2007-01-29 18:33:18 +00:00
csu Fix TLS on sparc64 for statically and dynamically linked binaries 2006-10-08 02:50:34 +00:00
libalias Fix a regression: let natd load libalias modules before /usr is mounted 2006-10-08 14:02:00 +00:00
libarchive Don't forget to increment the raw_position (bytes written) counter, even 2007-03-17 14:59:04 +00:00
libatm Bump library majro version for gethostbyaddr(3). 2006-05-21 15:15:21 +00:00
libautofs
libbegemot Bump the shared library version number of all libraries that have not 2005-07-22 17:19:05 +00:00
libbluetooth
libbsm Hook up additional OpenBSM man page aliases following OpenBSM 1.0 alpha 12 2006-09-25 11:53:58 +00:00
libbsnmp
libbz2
libc Use extents rather than binary buddies to track free pages within 2007-03-23 05:05:48 +00:00
libc_r Remove 3rd clause, renumber, ok per email 2007-01-12 07:26:21 +00:00
libcalendar
libcam 2nd and final commit that moves us to CAM_NEW_TRAN_CODE 2006-11-02 00:54:38 +00:00
libcom_err
libcompat Remove California Regent's clause 3, per letter 2007-01-09 01:02:06 +00:00
libcrypt
libdevinfo Markup fixes. 2006-09-17 21:27:35 +00:00
libdevstat
libdisk unbreak build for sparc64 etc. 2006-10-09 05:12:54 +00:00
libedit Merge the following changes from NetBSD: 2007-03-11 21:47:40 +00:00
libelf Correct a typo. 2007-03-19 03:52:20 +00:00
libexpat
libfetch Respect MK_INET6_SUPPORT. 2006-07-27 04:54:03 +00:00
libftpio Respect MK_INET6_SUPPORT. 2006-07-27 04:54:03 +00:00
libgeom
libgpib
libgssapi
libipsec Markup fixes. 2006-09-17 21:27:35 +00:00
libipx Remove California Regent's clause 3, per letter 2007-01-09 01:02:06 +00:00
libkiconv
libkse Oops, fix a typo in the last commit :-/ 2007-03-05 19:00:49 +00:00
libkvm - Move 'struct swdevt' back into swap_pager.h and expose it to userland. 2007-02-07 17:43:11 +00:00
libmagic Update for the 'file' 4.17 import. 2006-06-19 08:10:23 +00:00
libmd
libmemstat Fix a comment in memstat.h: errors are associated with memory type lists, 2007-03-15 10:44:18 +00:00
libmilter
libmp Pass BN_CTX to internal functions instead of allocating it internally. 2006-07-30 19:29:26 +00:00
libncp Mark data structures used on the wire with IPX SAP as __packed so that 2007-02-26 12:07:08 +00:00
libnetgraph Include sys/socket.h to know about sa_family_t. 2006-10-17 16:56:29 +00:00
libngatm
libopie
libpam Send not only Access Request, but also Access Challenge with defined 2007-01-20 08:52:04 +00:00
libpcap
libpmc Markup fixes. 2006-09-17 21:27:35 +00:00
libpthread Oops, fix a typo in the last commit :-/ 2007-03-05 19:00:49 +00:00
libradius
librpcsvc
librt
libsbuf
libsdp - Add new service class definitions and a new attribute identifier definition 2006-08-26 23:16:35 +00:00
libsm
libsmb
libsmdb
libsmutil
libstand Remove California Regent's clause 3, per letter 2007-01-09 01:02:06 +00:00
libtacplus o Fix function name. 2006-10-28 10:53:39 +00:00
libtelnet Stop enforcing dependencies between MK_* options at Makefile level. 2006-07-31 13:29:36 +00:00
libthr Remove 3rd clause, renumber, ok per email 2007-01-12 07:26:21 +00:00
libthread_db remove libc_r remanent. 2006-10-20 14:15:42 +00:00
libufs The ufs_disk_fillout(3) can take special device name (with or without /dev/ 2007-03-16 03:13:28 +00:00
libugidfw
libusbhid
libutil Remove California Regent's clause 3, per letter 2007-01-09 01:02:06 +00:00
libvgl o Fix typo. 2006-10-21 15:12:36 +00:00
libwrap Remove a (harmless) stray backslash. 2007-02-27 16:13:19 +00:00
liby Remove California Regent's clause 3, per letter 2007-01-09 01:02:06 +00:00
libypclnt Hook ypclnt.3 up to the build. 2007-02-15 02:43:14 +00:00
libz
msun Remove California Regent's clause 3, per letter 2007-01-09 01:02:06 +00:00
ncurses Enable ncurses wide character support 2007-03-09 12:11:58 +00:00
Makefile Switch to new ncurses build glue 2007-01-20 07:48:10 +00:00
Makefile.inc