[CRIU] [PATCH 1/3] page-pipe: allow to handle pipes in batch mode

Andrew Vagin avagin at parallels.com
Mon Jan 27 07:15:58 PST 2014


On Mon, Jan 27, 2014 at 07:11:22PM +0400, Cyrill Gorcunov wrote:
> On Mon, Jan 27, 2014 at 06:22:09PM +0400, Andrey Vagin wrote:
> >  
> > +/* The number of pipes for one batch request */
> > +#define NR_PIPES_PER_BATCH 8
> > +
> > +#define PAGE_ALLOC_COSTLY_ORDER 3 /* from the kernel source code */
> > +struct kernel_pipe_buffer {
> > +        struct page *page;
> > +        unsigned int offset, len;
> > +        const struct pipe_buf_operations *ops;
> > +        unsigned int flags;
> > +        unsigned long private;
> > +};
> > +
> > +void page_pipe_start_batching(struct page_pipe *pp,
> > +				page_pipe_batch_cb *cb, void *args)
> > +{
> > +	pp->pipe_nr	= NR_PIPES_PER_BATCH;
> > +	/*
> > +	 * The kernel allocates the linear chunk of memory for pipe buffers.
> > +	 * Allocation of chunks with size more than PAGE_ALLOC_COSTLY_ORDER
> > +	 * fails very often, so we need to restrict the pipe capacity to not
> > +	 * allocate big chunks.
> > +	 */
> > +	pp->pipe_max_size = 8 * PAGE_SIZE / sizeof(struct kernel_pipe_buffer);
> 
> 	NR_PIPES_PER_BATCH * PAGE_SIZE ?

PAGE_ALLOC_COSTLY_ORDER * PAGE_SIZE

Thanks.

> 
> Also where PAGE_ALLOC_COSTLY_ORDER is used?


More information about the CRIU mailing list