Messages in this thread | | | Date | Fri, 5 Aug 2022 07:53:49 -0700 | Subject | Re: [PATCHv7 02/14] mm: Add support for unaccepted memory | From | Dave Hansen <> |
| |
On 8/5/22 07:22, David Hildenbrand wrote: >> A list that sits besides the existing free_area, contains only >=pageblock >> order sizes of unaccepted pages (no migratetype distinguished) and we tap >> into it approximately before __rmqueue_fallback()? There would be some >> trickery around releasing zone-lock for doing accept_memory(), but should be >> manageable. >> > Just curious, do we have a microbenchmark that is able to reveal the > impact of such code changes before we start worrying?
Nope. I went looking to see if I could find any impact. I think Kirill did too. Too bad that effort didn't make it into the changelog yet.
The merging check at least is just checking a field in a cache-hot 'struct page'. The common case is probably three instructions:
load to a register check the bit jump if not set
It adds a wee bit of icache pressure, but it's also the kind of thing that should be a piece of cake for the branch predictors.
That dynamic check could easily be wrapped by a static branch. But, that first requires more code to go dig in the nooks and crannies of the page allocator to make sure *ALL* pages are accepted.
| |