[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LSU.2.11.2009150059310.1550@eggly.anvils>
Date: Tue, 15 Sep 2020 01:10:05 -0700 (PDT)
From: Hugh Dickins <hughd@...gle.com>
To: "Matthew Wilcox (Oracle)" <willy@...radead.org>
cc: linux-mm@...ck.org, Andrew Morton <akpm@...ux-foundation.org>,
Hugh Dickins <hughd@...gle.com>,
William Kucharski <william.kucharski@...cle.com>,
Jani Nikula <jani.nikula@...ux.intel.com>,
Alexey Dobriyan <adobriyan@...il.com>,
Johannes Weiner <hannes@...xchg.org>,
Chris Wilson <chris@...is-wilson.co.uk>,
Matthew Auld <matthew.auld@...el.com>,
Huang Ying <ying.huang@...el.com>,
intel-gfx@...ts.freedesktop.org, cgroups@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 0/8] Return head pages from find_*_entry
On Thu, 10 Sep 2020, Matthew Wilcox (Oracle) wrote:
> This patch series started out as part of the THP patch set, but it has
> some nice effects along the way and it seems worth splitting it out and
> submitting separately.
>
> Currently find_get_entry() and find_lock_entry() return the page
> corresponding to the requested index, but the first thing most callers do
> is find the head page, which we just threw away. As part of auditing
> all the callers, I found some misuses of the APIs and some plain
> inefficiencies that I've fixed.
>
> The diffstat is unflattering, but I added more kernel-doc and a new wrapper.
>
> v2:
> - Rework how shmem_getpage_gfp() handles getting a head page back from
> find_lock_entry()
> - Renamed find_get_swap_page() to find_get_incore_page()
> - Make sure find_get_incore_page() doesn't return a head page
> - Fix the missing include of linux/shmem_fs.h
> - Move find_get_entry and find_lock_entry prototypes to mm/internal.h
> - Rename thp_valid_index() to thp_contains()
> - Fix thp_contains() for hugetlbfs and swapcache
> - Add find_lock_head() wrapper around pagecache_get_page()
>
> Matthew Wilcox (Oracle) (8):
> mm: Factor find_get_incore_page out of mincore_page
> mm: Use find_get_incore_page in memcontrol
> mm: Optimise madvise WILLNEED
> proc: Optimise smaps for shmem entries
> i915: Use find_lock_page instead of find_lock_entry
> mm: Convert find_get_entry to return the head page
> mm/shmem: Return head page from find_lock_entry
> mm: Add find_lock_head
>
> drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 4 +--
> fs/proc/task_mmu.c | 8 +----
> include/linux/pagemap.h | 43 +++++++++++++++++-----
> include/linux/swap.h | 7 ++++
> mm/filemap.c | 44 +++++++++++------------
> mm/internal.h | 3 ++
> mm/madvise.c | 21 ++++++-----
> mm/memcontrol.c | 24 ++-----------
> mm/mincore.c | 28 ++-------------
> mm/shmem.c | 20 +++++------
> mm/swap_state.c | 32 +++++++++++++++++
> 11 files changed, 127 insertions(+), 107 deletions(-)
>
> --
> 2.28.0
I was testing mmotm today (plus the shmem.c and swap_state.c
fixes that you posted, but I did not try the madvise.c one) -
my usual tmpfs swapping loads (plus hyperactive khugepaged to
maximize the THPs). It behaved well, no problems found.
But I probably won't get to try your series of 12 for a few days.
Hugh
Powered by blists - more mailing lists