A pool resource consists of a collection of pools
serving requests for different block sizes.
Each individual pool manages a collection of chunks
that are in turn divided into blocks of uniform size,
returned via calls to do_allocate.
Each call to do_allocate(size, alignment)
to the pool serving the smallest blocks accommodating at least size