This review isn't supposed to be committed as a whole!
It consist UMA limits in zone with some extra UMA changes.
It also has changes to create pbuf zone. The latter depends
on having UMA limits in zone.
The review is posted to review UMA changes only.
o Account number of items a zone holds. Counter is updated whenever
items transition from keg to a bucket cache or directly to a consumer.
- New fields uz_items, uz_maxitems. Deleted uk_maxpages.
- Point to return NULL or sleep shifts from keg_fetch_slab() to uma_zalloc_arg()
- zone_alloc_bucket() inlined
- Add uz_count_max to prevent bucket cache to grow too big for zones with really small limits. See update to uma_zone_set_max().
o Keep counter of sleepers and wakeup them one by one.
o Optimize uma_zfree_arg() to keep lock locked during back jumps
o Allow to limit number of items in bucket cache.
- UMA_ZONE_NOBUCKETCACHE removed, just use limit of 0.
- zone_cache_bucket()/zone_remove_bucket() to keep count of items
o Drop support for multi-keg zones, lots stuff deleted and
simplified. Make sure uma_zone_t is now perfectly aligned.