On 27/06/2023 04:04, Yu Zhao wrote: > On Mon, Jun 26, 2023 at 11:15 AM Ryan Roberts <ryan.roberts@xxxxxxx> wrote: >> >> This allows batching the rmap removal with folio_remove_rmap_range(), >> which means we avoid spuriously adding a partially unmapped folio to the >> deferrred split queue in the common case, which reduces split queue lock >> contention. >> >> Previously each page was removed from the rmap individually with >> page_remove_rmap(). If the first page belonged to a large folio, this >> would cause page_remove_rmap() to conclude that the folio was now >> partially mapped and add the folio to the deferred split queue. But >> subsequent calls would cause the folio to become fully unmapped, meaning >> there is no value to adding it to the split queue. >> >> Signed-off-by: Ryan Roberts <ryan.roberts@xxxxxxx> >> --- >> mm/memory.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 119 insertions(+) > > We don't really need this patch for the series to work. So again, I'd > split it out. The reason I included it in the MVP was that without it I was seeing high lock contention for the split queue lock, which was significantly eating the performance gains. But since then Yin Fengwei's patch to make this more efficient has been accepted so perhaps that solves the problem and in that case we can drop this as you suggest. If I still see a reasonable perf improvement without it, I'll drop for v2.