Re: [PATCH] mm: fix pcp count beyond pcp high in pcplist allocation

From: Mel Gorman
Date: Tue Nov 01 2022 - 06:41:00 EST


On Mon, Oct 31, 2022 at 11:37:35AM +0800, Chen Wandun wrote:
> > > > As is, the patch could result in a batch request of 0 and
> > >  I foget this, the patch need some improve, thanks.
> > >
> > > > fall through to allocating from the zone list anyway defeating the
> > > > purpose of the PCP allocator and probably regressing performance in some
> > > > csaes.
> > > Same as I understand???how about set high/batch for each order in pcplist???
> > Using anything would than (X >> order) consumes storage. Even if storage
> > was to be used, selecting a value per-order would be impossible because
> > the correct value would depend on frequency of requests for each order.
> > That can only be determined at runtime and the cost of determining the
> > value would likely exceed the benefit.
>
> Can we set a experience value for pcp batch for each order during init
> stage?

I'm not sure what you mean by "experience value" but maybe you meant
experimental value?

> If so we can make accurately control for pcp size. Nowdays, the size of each
> order in pcp list is full of randomness. I dont konw which scheme is better
> for performance.
>

It is something that could be experimented with but the main question is
-- what should those per-order values be? One option would be to enforce
pcp->high for all high-order values except THP if THP is enabled. That would
limit some of the issues with pcp->high being exceeded as even if two THPs
are refilled, one of them is allocated immediately. I wasn't convinced it was
necessary when implementing high-order PCP support but it could be evaluated.

--
Mel Gorman
SUSE Labs