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

From: Chen Wandun
Date: Thu Nov 03 2022 - 08:47:06 EST




在 2022/11/1 18:40, Mel Gorman 写道:
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?
yes, experimental value,  sorry for that.

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.
Thank you for your suggestion, I will do some tests.