xref: /freebsd/share/man/man9/zone.9 (revision b1edef175b19fca88a3962b63cdaa4a46fed87a5)
10aa028ffSDag-Erling Smørgrav.\"-
26e18fca1SUlrich Spörlein.\" Copyright (c) 2001 Dag-Erling Coïdan Smørgrav
30aa028ffSDag-Erling Smørgrav.\" All rights reserved.
40aa028ffSDag-Erling Smørgrav.\"
50aa028ffSDag-Erling Smørgrav.\" Redistribution and use in source and binary forms, with or without
60aa028ffSDag-Erling Smørgrav.\" modification, are permitted provided that the following conditions
70aa028ffSDag-Erling Smørgrav.\" are met:
80aa028ffSDag-Erling Smørgrav.\" 1. Redistributions of source code must retain the above copyright
90aa028ffSDag-Erling Smørgrav.\"    notice, this list of conditions and the following disclaimer.
100aa028ffSDag-Erling Smørgrav.\" 2. Redistributions in binary form must reproduce the above copyright
110aa028ffSDag-Erling Smørgrav.\"    notice, this list of conditions and the following disclaimer in the
120aa028ffSDag-Erling Smørgrav.\"    documentation and/or other materials provided with the distribution.
130aa028ffSDag-Erling Smørgrav.\"
140aa028ffSDag-Erling Smørgrav.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
150aa028ffSDag-Erling Smørgrav.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
160aa028ffSDag-Erling Smørgrav.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
170aa028ffSDag-Erling Smørgrav.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
180aa028ffSDag-Erling Smørgrav.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
190aa028ffSDag-Erling Smørgrav.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
200aa028ffSDag-Erling Smørgrav.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
210aa028ffSDag-Erling Smørgrav.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
220aa028ffSDag-Erling Smørgrav.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
230aa028ffSDag-Erling Smørgrav.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
240aa028ffSDag-Erling Smørgrav.\" SUCH DAMAGE.
250aa028ffSDag-Erling Smørgrav.\"
260aa028ffSDag-Erling Smørgrav.\" $FreeBSD$
270aa028ffSDag-Erling Smørgrav.\"
2807f490acSGleb Smirnoff.Dd March 21, 2013
290aa028ffSDag-Erling Smørgrav.Dt ZONE 9
300aa028ffSDag-Erling Smørgrav.Os
310aa028ffSDag-Erling Smørgrav.Sh NAME
32382682b2SJeroen Ruigrok van der Werven.Nm uma_zcreate ,
337c32182eSJeroen Ruigrok van der Werven.Nm uma_zalloc ,
346a4c41d1SRemko Lodder.Nm uma_zalloc_arg ,
357c32182eSJeroen Ruigrok van der Werven.Nm uma_zfree ,
366a4c41d1SRemko Lodder.Nm uma_zfree_arg ,
3707f490acSGleb Smirnoff.Nm uma_find_refcnt ,
38d7bbb21aSHartmut Brandt.Nm uma_zdestroy ,
39c4ae7908SLawrence Stewart.Nm uma_zone_set_max,
40c4ae7908SLawrence Stewart.Nm uma_zone_get_max,
412f891cd5SPawel Jakub Dawidek.Nm uma_zone_get_cur,
422f891cd5SPawel Jakub Dawidek.Nm uma_zone_set_warning
43f5fccbbcSDag-Erling Smørgrav.Nd zone allocator
440aa028ffSDag-Erling Smørgrav.Sh SYNOPSIS
4532eef9aeSRuslan Ermilov.In sys/param.h
46f16b3c0dSChad David.In sys/queue.h
473a347a6eSJeroen Ruigrok van der Werven.In vm/uma.h
48382682b2SJeroen Ruigrok van der Werven.Ft uma_zone_t
499be1948fSRuslan Ermilov.Fo uma_zcreate
509be1948fSRuslan Ermilov.Fa "char *name" "int size"
519be1948fSRuslan Ermilov.Fa "uma_ctor ctor" "uma_dtor dtor" "uma_init uminit" "uma_fini fini"
526b99842aSEd Schouten.Fa "int align" "uint16_t flags"
539be1948fSRuslan Ermilov.Fc
549be1948fSRuslan Ermilov.Ft "void *"
559be1948fSRuslan Ermilov.Fn uma_zalloc "uma_zone_t zone" "int flags"
566a4c41d1SRemko Lodder.Ft "void *"
576a4c41d1SRemko Lodder.Fn uma_zalloc_arg "uma_zone_t zone" "void *arg" "int flags"
580aa028ffSDag-Erling Smørgrav.Ft void
59f1de92e6SJeroen Ruigrok van der Werven.Fn uma_zfree "uma_zone_t zone" "void *item"
605ca0c84eSThomas Moestl.Ft void
616a4c41d1SRemko Lodder.Fn uma_zfree_arg "uma_zone_t zone" "void *item" "void *arg"
6207f490acSGleb Smirnoff.Ft "uint32_t *"
6307f490acSGleb Smirnoff.Fn uma_find_refcnt "uma_zone_t zone" "void *item"
646a4c41d1SRemko Lodder.Ft void
65f1de92e6SJeroen Ruigrok van der Werven.Fn uma_zdestroy "uma_zone_t zone"
661c6cae97SLawrence Stewart.Ft int
67d7bbb21aSHartmut Brandt.Fn uma_zone_set_max "uma_zone_t zone" "int nitems"
68c4ae7908SLawrence Stewart.Ft int
69c4ae7908SLawrence Stewart.Fn uma_zone_get_max "uma_zone_t zone"
70c4ae7908SLawrence Stewart.Ft int
71c4ae7908SLawrence Stewart.Fn uma_zone_get_cur "uma_zone_t zone"
722f891cd5SPawel Jakub Dawidek.Ft void
732f891cd5SPawel Jakub Dawidek.Fn uma_zone_set_warning "uma_zone_t zone" "const char *warning"
740aa028ffSDag-Erling Smørgrav.Sh DESCRIPTION
750aa028ffSDag-Erling SmørgravThe zone allocator provides an efficient interface for managing
760aa028ffSDag-Erling Smørgravdynamically-sized collections of items of similar size.
770aa028ffSDag-Erling SmørgravThe zone allocator can work with preallocated zones as well as with
780aa028ffSDag-Erling Smørgravruntime-allocated ones, and is therefore available much earlier in the
790aa028ffSDag-Erling Smørgravboot process than other memory management routines.
800aa028ffSDag-Erling Smørgrav.Pp
810aa028ffSDag-Erling SmørgravA zone is an extensible collection of items of identical size.
820aa028ffSDag-Erling SmørgravThe zone allocator keeps track of which items are in use and which
83008080bdSJeroen Ruigrok van der Wervenare not, and provides functions for allocating items from the zone and
840aa028ffSDag-Erling Smørgravfor releasing them back (which makes them available for later use).
850aa028ffSDag-Erling Smørgrav.Pp
86ced699e3SRuslan ErmilovAfter the first allocation of an item,
8790d83886SJulian Elischerit will have been cleared to zeroes, however subsequent allocations
887251f557SKonstantin Belousovwill retain the contents as of the last free.
8990d83886SJulian Elischer.Pp
90382682b2SJeroen Ruigrok van der WervenThe
91382682b2SJeroen Ruigrok van der Werven.Fn uma_zcreate
92382682b2SJeroen Ruigrok van der Wervenfunction creates a new zone from which items may then be allocated from.
93382682b2SJeroen Ruigrok van der WervenThe
94382682b2SJeroen Ruigrok van der Werven.Fa name
95382682b2SJeroen Ruigrok van der Wervenargument is a text name of the zone for debugging and stats; this memory
96382682b2SJeroen Ruigrok van der Wervenshould not be freed until the zone has been deallocated.
97382682b2SJeroen Ruigrok van der Werven.Pp
984919e8cbSAlfred PerlsteinThe
994919e8cbSAlfred Perlstein.Fa ctor
1004919e8cbSAlfred Perlsteinand
1014919e8cbSAlfred Perlstein.Fa dtor
1024919e8cbSAlfred Perlsteinarguments are callback functions that are called by
1034919e8cbSAlfred Perlsteinthe uma subsystem at the time of the call to
1044919e8cbSAlfred Perlstein.Fn uma_zalloc
1054919e8cbSAlfred Perlsteinand
1064919e8cbSAlfred Perlstein.Fn uma_zfree
107d962d52aSRuslan Ermilovrespectively.
108d962d52aSRuslan ErmilovTheir purpose is to provide hooks for initializing or
1094919e8cbSAlfred Perlsteindestroying things that need to be done at the time of the allocation
110d962d52aSRuslan Ermilovor release of a resource.
111e07f1d5fSHiten PandyaA good usage for the
1124919e8cbSAlfred Perlstein.Fa ctor
1134919e8cbSAlfred Perlsteinand
1144919e8cbSAlfred Perlstein.Fa dtor
1154919e8cbSAlfred Perlsteincallbacks
1164919e8cbSAlfred Perlsteinmight be to adjust a global count of the number of objects allocated.
1174919e8cbSAlfred Perlstein.Pp
1184919e8cbSAlfred PerlsteinThe
1194919e8cbSAlfred Perlstein.Fa uminit
1204919e8cbSAlfred Perlsteinand
1214919e8cbSAlfred Perlstein.Fa fini
1224919e8cbSAlfred Perlsteinarguments are used to optimize the allocation of
123d962d52aSRuslan Ermilovobjects from the zone.
124d962d52aSRuslan ErmilovThey are called by the uma subsystem whenever
1254919e8cbSAlfred Perlsteinit needs to allocate or free several items to satisfy requests or memory
126d962d52aSRuslan Ermilovpressure.
127d962d52aSRuslan ErmilovA good use for the
128d962d52aSRuslan Ermilov.Fa uminit
129d962d52aSRuslan Ermilovand
130d962d52aSRuslan Ermilov.Fa fini
131d962d52aSRuslan Ermilovcallbacks might be to
132d962d52aSRuslan Ermilovinitialize and destroy mutexes contained within the object.
133d962d52aSRuslan ErmilovThis would
1344919e8cbSAlfred Perlsteinallow one to re-use already initialized mutexes when an object is returned
135d962d52aSRuslan Ermilovfrom the uma subsystem's object cache.
136d962d52aSRuslan ErmilovThey are not called on each call to
1374919e8cbSAlfred Perlstein.Fn uma_zalloc
1384919e8cbSAlfred Perlsteinand
1394919e8cbSAlfred Perlstein.Fn uma_zfree
1404919e8cbSAlfred Perlsteinbut rather in a batch mode on several objects.
1414919e8cbSAlfred Perlstein.Pp
142b7e2b86cSGleb SmirnoffThe
143b7e2b86cSGleb Smirnoff.Fa flags
144b7e2b86cSGleb Smirnoffargument of the
145b7e2b86cSGleb Smirnoff.Fn uma_zcreate
146b7e2b86cSGleb Smirnoffis a subset of the following flags:
147b7e2b86cSGleb Smirnoff.Bl -tag -width "foo"
148b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_NOFREE
149b7e2b86cSGleb SmirnoffSlabs of the zone are never returned back to VM.
150b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_REFCNT
151b7e2b86cSGleb SmirnoffEach item in the zone would have internal reference counter associated with it.
152b7e2b86cSGleb SmirnoffSee
153b7e2b86cSGleb Smirnoff.Fn uma_find_refcnt .
154b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_NODUMP
155b7e2b86cSGleb SmirnoffPages belonging to the zone will not be included into mini-dumps.
156ad97af7eSGleb Smirnoff.It Dv UMA_ZONE_PCPU
157ad97af7eSGleb SmirnoffAn allocation from zone would have
158ad97af7eSGleb Smirnoff.Va mp_ncpu
159ad97af7eSGleb Smirnoffshadow copies, that are privately assigned to CPUs.
160ad97af7eSGleb SmirnoffA CPU can address its private copy using base allocation address plus
161ad97af7eSGleb Smirnoffmultiple of current CPU id and
162ad97af7eSGleb Smirnoff.Fn sizeof "struct pcpu" :
163ad97af7eSGleb Smirnoff.Bd -literal -offset indent
164ad97af7eSGleb Smirnofffoo_zone = uma_zcreate(..., UMA_ZONE_PCPU);
165ad97af7eSGleb Smirnoff ...
166ad97af7eSGleb Smirnofffoo_base = uma_zalloc(foo_zone, ...);
167ad97af7eSGleb Smirnoff ...
168ad97af7eSGleb Smirnoffcritical_enter();
169ad97af7eSGleb Smirnofffoo_pcpu = (foo_t *)zpcpu_get(foo_base);
170ad97af7eSGleb Smirnoff/* do something with foo_pcpu */
171ad97af7eSGleb Smirnoffcritical_exit();
172ad97af7eSGleb Smirnoff.Ed
173b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_OFFPAGE
174b7e2b86cSGleb SmirnoffBy default book-keeping of items within a slab is done in the slab page itself.
175b7e2b86cSGleb SmirnoffThis flag explicitly tells subsystem that book-keeping structure should be
176b7e2b86cSGleb Smirnoffallocated separately from special internal zone.
177b7e2b86cSGleb SmirnoffThis flag requires either
178b7e2b86cSGleb Smirnoff.Dv UMA_ZONE_VTOSLAB
179b7e2b86cSGleb Smirnoffor
180b7e2b86cSGleb Smirnoff.Dv UMA_ZONE_HASH ,
181b7e2b86cSGleb Smirnoffsince subsystem requires a mechanism to find a book-keeping structure
182b7e2b86cSGleb Smirnoffto an item beeing freed.
183b7e2b86cSGleb SmirnoffThe subsystem may choose to prefer offpage book-keeping for certain zones
184b7e2b86cSGleb Smirnoffimplicitly.
185b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_ZINIT
186b7e2b86cSGleb SmirnoffThe zone will have its
187b7e2b86cSGleb Smirnoff.Ft uma_init
188b7e2b86cSGleb Smirnoffmethod set to internal method that initializes a new allocated slab
189b7e2b86cSGleb Smirnoffto all zeros.
190*b1edef17SJoel DahlDo not mistake
191b7e2b86cSGleb Smirnoff.Ft uma_init
192b7e2b86cSGleb Smirnoffmethod with
193b7e2b86cSGleb Smirnoff.Ft uma_ctor .
194b7e2b86cSGleb SmirnoffA zone with
195b7e2b86cSGleb Smirnoff.Dv UMA_ZONE_ZINIT
196b7e2b86cSGleb Smirnoffflag would not return zeroed memory on every
197b7e2b86cSGleb Smirnoff.Fn uma_zalloc .
198b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_HASH
199b7e2b86cSGleb SmirnoffThe zone should use an internal hash table to find slab book-keeping
200b7e2b86cSGleb Smirnoffstructure where an allocation being freed belongs to.
201b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_VTOSLAB
202b7e2b86cSGleb SmirnoffThe zone should use special field of
203b7e2b86cSGleb Smirnoff.Vt vm_page_t
204b7e2b86cSGleb Smirnoffto find slab book-keeping structure where an allocation being freed belongs to.
205b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_MALLOC
206b7e2b86cSGleb SmirnoffThe zone is for the
207b7e2b86cSGleb Smirnoff.Xr malloc 9
208b7e2b86cSGleb Smirnoffsubsystem.
209b7e2b86cSGleb Smirnoff.It Dv UMA_ZONE_VM
210b7e2b86cSGleb SmirnoffThe zone is for the VM subsystem.
211b7e2b86cSGleb Smirnoff.El
212b7e2b86cSGleb Smirnoff.Pp
2130aa028ffSDag-Erling SmørgravTo allocate an item from a zone, simply call
2147c32182eSJeroen Ruigrok van der Werven.Fn uma_zalloc
2151437c79aSJeroen Ruigrok van der Wervenwith a pointer to that zone
2161437c79aSJeroen Ruigrok van der Wervenand set the
217acff84fbSJeroen Ruigrok van der Werven.Fa flags
218acff84fbSJeroen Ruigrok van der Wervenargument to selected flags as documented in
219acff84fbSJeroen Ruigrok van der Werven.Xr malloc 9 .
2201437c79aSJeroen Ruigrok van der WervenIt will return a pointer to an item if successful,
2211437c79aSJeroen Ruigrok van der Wervenor
2220aa028ffSDag-Erling Smørgrav.Dv NULL
2230aa028ffSDag-Erling Smørgravin the rare case where all items in the zone are in use and the
2241437c79aSJeroen Ruigrok van der Wervenallocator is unable to grow the zone
2252864c799SEdward Tomasz Napieralaand
2261437c79aSJeroen Ruigrok van der Werven.Dv M_NOWAIT
2271437c79aSJeroen Ruigrok van der Wervenis specified.
2280aa028ffSDag-Erling Smørgrav.Pp
2290aa028ffSDag-Erling SmørgravItems are released back to the zone from which they were allocated by
2300aa028ffSDag-Erling Smørgravcalling
2317c32182eSJeroen Ruigrok van der Werven.Fn uma_zfree
2320aa028ffSDag-Erling Smørgravwith a pointer to the zone and a pointer to the item.
23320ed0cb0SMatthew D FlemingIf
23420ed0cb0SMatthew D Fleming.Fa item
23520ed0cb0SMatthew D Flemingis
23620ed0cb0SMatthew D Fleming.Dv NULL ,
23720ed0cb0SMatthew D Flemingthen
23820ed0cb0SMatthew D Fleming.Fn uma_zfree
23920ed0cb0SMatthew D Flemingdoes nothing.
2405ca0c84eSThomas Moestl.Pp
2416a4c41d1SRemko LodderThe variations
2426a4c41d1SRemko Lodder.Fn uma_zalloc_arg
2436a4c41d1SRemko Lodderand
2446a4c41d1SRemko Lodder.Fn uma_zfree_arg
2456a4c41d1SRemko Lodderallow to
2466a4c41d1SRemko Lodderspecify an argument for the
2476a4c41d1SRemko Lodder.Dv ctor
2486a4c41d1SRemko Lodderand
2496a4c41d1SRemko Lodder.Dv dtor
2506a4c41d1SRemko Lodderfunctions, respectively.
2516a4c41d1SRemko Lodder.Pp
25207f490acSGleb SmirnoffIf zone was created with
25307f490acSGleb Smirnoff.Dv UMA_ZONE_REFCNT
25407f490acSGleb Smirnoffflag, then pointer to reference counter for an item can be retrieved with
25507f490acSGleb Smirnoffhelp of the
25607f490acSGleb Smirnoff.Fn uma_find_refcnt
25707f490acSGleb Smirnofffunction.
25807f490acSGleb Smirnoff.Pp
25955407559SJeroen Ruigrok van der WervenCreated zones,
26055407559SJeroen Ruigrok van der Wervenwhich are empty,
2615ca0c84eSThomas Moestlcan be destroyed using
2627c32182eSJeroen Ruigrok van der Werven.Fn uma_zdestroy ,
2635ca0c84eSThomas Moestlfreeing all memory that was allocated for the zone.
2645ca0c84eSThomas MoestlAll items allocated from the zone with
2657c32182eSJeroen Ruigrok van der Werven.Fn uma_zalloc
2665ca0c84eSThomas Moestlmust have been freed with
2677c32182eSJeroen Ruigrok van der Werven.Fn uma_zfree
2685ca0c84eSThomas Moestlbefore.
269d7bbb21aSHartmut Brandt.Pp
270c4ae7908SLawrence StewartThe
271d7bbb21aSHartmut Brandt.Fn uma_zone_set_max
272c4ae7908SLawrence Stewartfunction limits the number of items
273c4ae7908SLawrence Stewart.Pq and therefore memory
274c4ae7908SLawrence Stewartthat can be allocated to
275c4ae7908SLawrence Stewart.Fa zone .
276d7bbb21aSHartmut BrandtThe
277d7bbb21aSHartmut Brandt.Fa nitems
278c4ae7908SLawrence Stewartargument specifies the requested upper limit number of items.
2791c6cae97SLawrence StewartThe effective limit is returned to the caller, as it may end up being higher
2801c6cae97SLawrence Stewartthan requested due to the implementation rounding up to ensure all memory pages
2811c6cae97SLawrence Stewartallocated to the zone are utilised to capacity.
282c4ae7908SLawrence StewartThe limit applies to the total number of items in the zone, which includes
283d7bbb21aSHartmut Brandtallocated items, free items and free items in the per-cpu caches.
284d7bbb21aSHartmut BrandtOn systems with more than one CPU it may not be possible to allocate
285d7bbb21aSHartmut Brandtthe specified number of items even when there is no shortage of memory,
286d7bbb21aSHartmut Brandtbecause all of the remaining free items may be in the caches of the
287d7bbb21aSHartmut Brandtother CPUs when the limit is hit.
288c4ae7908SLawrence Stewart.Pp
289c4ae7908SLawrence StewartThe
290c4ae7908SLawrence Stewart.Fn uma_zone_get_max
291c4ae7908SLawrence Stewartfunction returns the effective upper limit number of items for a zone.
292c4ae7908SLawrence Stewart.Pp
293c4ae7908SLawrence StewartThe
294c4ae7908SLawrence Stewart.Fn uma_zone_get_cur
295c4ae7908SLawrence Stewartfunction returns the approximate current occupancy of the zone.
296c4ae7908SLawrence StewartThe returned value is approximate because appropriate synchronisation to
2973102cfe2SGlen Barberdetermine an exact value is not performed by the implementation.
298c4ae7908SLawrence StewartThis ensures low overhead at the expense of potentially stale data being used
299c4ae7908SLawrence Stewartin the calculation.
3002f891cd5SPawel Jakub Dawidek.Pp
3012f891cd5SPawel Jakub DawidekThe
3022f891cd5SPawel Jakub Dawidek.Fn uma_zone_set_warning
3032f891cd5SPawel Jakub Dawidekfunction sets a warning that will be printed on the system console when the
3042f891cd5SPawel Jakub Dawidekgiven zone becomes full and fails to allocate an item.
3052f891cd5SPawel Jakub DawidekThe warning will be printed not often than every five minutes.
3062f891cd5SPawel Jakub DawidekWarnings can be turned off globally by setting the
3072f891cd5SPawel Jakub Dawidek.Va vm.zone_warnings
3082f891cd5SPawel Jakub Dawideksysctl tunable to
3092f891cd5SPawel Jakub Dawidek.Va 0 .
3100aa028ffSDag-Erling Smørgrav.Sh RETURN VALUES
3110aa028ffSDag-Erling SmørgravThe
3127c32182eSJeroen Ruigrok van der Werven.Fn uma_zalloc
3130aa028ffSDag-Erling Smørgravfunction returns a pointer to an item, or
3140aa028ffSDag-Erling Smørgrav.Dv NULL
3152864c799SEdward Tomasz Napieralaif the zone ran out of unused items
3162864c799SEdward Tomasz Napieralaand
3172864c799SEdward Tomasz Napierala.Dv M_NOWAIT
3182864c799SEdward Tomasz Napieralawas specified.
3190aa028ffSDag-Erling Smørgrav.Sh SEE ALSO
3200aa028ffSDag-Erling Smørgrav.Xr malloc 9
3210aa028ffSDag-Erling Smørgrav.Sh HISTORY
3220aa028ffSDag-Erling SmørgravThe zone allocator first appeared in
3230aa028ffSDag-Erling Smørgrav.Fx 3.0 .
3249a795583SJeroen Ruigrok van der WervenIt was radically changed in
3259a795583SJeroen Ruigrok van der Werven.Fx 5.0
3269a795583SJeroen Ruigrok van der Wervento function as a slab allocator.
3270aa028ffSDag-Erling Smørgrav.Sh AUTHORS
3280aa028ffSDag-Erling Smørgrav.An -nosplit
3290aa028ffSDag-Erling SmørgravThe zone allocator was written by
3300aa028ffSDag-Erling Smørgrav.An John S. Dyson .
3319a795583SJeroen Ruigrok van der WervenThe zone allocator was rewritten in large parts by
3329a795583SJeroen Ruigrok van der Werven.An Jeff Roberson Aq jeff@FreeBSD.org
3339a795583SJeroen Ruigrok van der Wervento function as a slab allocator.
3340aa028ffSDag-Erling Smørgrav.Pp
3350aa028ffSDag-Erling SmørgravThis manual page was written by
33609e06539SDag-Erling Smørgrav.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
3379a795583SJeroen Ruigrok van der WervenChanges for UMA by
3389a795583SJeroen Ruigrok van der Werven.An Jeroen Ruigrok van der Werven Aq asmodai@FreeBSD.org .
339