285 * The magazine lists used in the depot.
286 */
287 typedef struct kmem_maglist {
288 kmem_magazine_t *ml_list; /* magazine list */
289 long ml_total; /* number of magazines */
290 long ml_min; /* min since last update */
291 long ml_reaplimit; /* max reapable magazines */
292 uint64_t ml_alloc; /* allocations from this list */
293 } kmem_maglist_t;
294
295 typedef struct kmem_defrag {
296 /*
297 * Statistics
298 */
299 uint64_t kmd_callbacks; /* move callbacks */
300 uint64_t kmd_yes; /* KMEM_CBRC_YES responses */
301 uint64_t kmd_no; /* NO responses */
302 uint64_t kmd_later; /* LATER responses */
303 uint64_t kmd_dont_need; /* DONT_NEED responses */
304 uint64_t kmd_dont_know; /* DONT_KNOW responses */
305 uint64_t kmd_hunt_found; /* DONT_KNOW: # found in mag */
306 uint64_t kmd_slabs_freed; /* slabs freed by moves */
307 uint64_t kmd_defrags; /* kmem_cache_defrag() */
308 uint64_t kmd_scans; /* kmem_cache_scan() */
309
310 /*
311 * Consolidator fields
312 */
313 avl_tree_t kmd_moves_pending; /* buffer moves pending */
314 list_t kmd_deadlist; /* deferred slab frees */
315 size_t kmd_deadcount; /* # of slabs in kmd_deadlist */
316 uint8_t kmd_reclaim_numer; /* slab usage threshold */
317 uint8_t kmd_pad1; /* compiler padding */
318 uint16_t kmd_consolidate; /* triggers consolidator */
319 uint32_t kmd_pad2; /* compiler padding */
320 size_t kmd_slabs_sought; /* reclaimable slabs sought */
321 size_t kmd_slabs_found; /* reclaimable slabs found */
322 size_t kmd_tries; /* nth scan interval counter */
323 /*
324 * Fields used to ASSERT that the client does not kmem_cache_free()
325 * objects passed to the move callback.
|
285 * The magazine lists used in the depot.
286 */
287 typedef struct kmem_maglist {
288 kmem_magazine_t *ml_list; /* magazine list */
289 long ml_total; /* number of magazines */
290 long ml_min; /* min since last update */
291 long ml_reaplimit; /* max reapable magazines */
292 uint64_t ml_alloc; /* allocations from this list */
293 } kmem_maglist_t;
294
295 typedef struct kmem_defrag {
296 /*
297 * Statistics
298 */
299 uint64_t kmd_callbacks; /* move callbacks */
300 uint64_t kmd_yes; /* KMEM_CBRC_YES responses */
301 uint64_t kmd_no; /* NO responses */
302 uint64_t kmd_later; /* LATER responses */
303 uint64_t kmd_dont_need; /* DONT_NEED responses */
304 uint64_t kmd_dont_know; /* DONT_KNOW responses */
305 uint64_t kmd_slabs_freed; /* slabs freed by moves */
306 uint64_t kmd_defrags; /* kmem_cache_defrag() */
307 uint64_t kmd_scans; /* kmem_cache_scan() */
308
309 /*
310 * Consolidator fields
311 */
312 avl_tree_t kmd_moves_pending; /* buffer moves pending */
313 list_t kmd_deadlist; /* deferred slab frees */
314 size_t kmd_deadcount; /* # of slabs in kmd_deadlist */
315 uint8_t kmd_reclaim_numer; /* slab usage threshold */
316 uint8_t kmd_pad1; /* compiler padding */
317 uint16_t kmd_consolidate; /* triggers consolidator */
318 uint32_t kmd_pad2; /* compiler padding */
319 size_t kmd_slabs_sought; /* reclaimable slabs sought */
320 size_t kmd_slabs_found; /* reclaimable slabs found */
321 size_t kmd_tries; /* nth scan interval counter */
322 /*
323 * Fields used to ASSERT that the client does not kmem_cache_free()
324 * objects passed to the move callback.
|