Dave Hansen wrote: > On Tue, 2009-04-28 at 19:23 -0400, Oren Laadan wrote: >> +/* return (and detach) first empty page-array in the pool, if exists */ >> +static inline struct ckpt_pgarr *pgarr_from_pool(struct ckpt_ctx *ctx) >> +{ >> + struct ckpt_pgarr *pgarr; >> + >> + if (list_empty(&ctx->pgarr_pool)) >> + return NULL; >> + pgarr = list_first_entry(&ctx->pgarr_pool, struct ckpt_pgarr, list); >> + list_del(&pgarr->list); >> + return pgarr; >> +} > > What's the pool for, again? If we're alloc/freeing a bunch of these, > I'd vote for a slab cache rather than managing our own pool. It's not about the 'struct ckpt_pgarr' per se. Each ckpt_pgarr in itself points to two page-size buffers allocate as well. The pool avoids redundant alloc/dealloc of those buffers while iterating through all VMAs of all tasks. Oren. _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers