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
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to