linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mike Kravetz <mike.kravetz@oracle.com>
To: Oscar Salvador <osalvador@suse.de>,
	Muchun Song <songmuchun@bytedance.com>
Cc: "Jonathan Corbet" <corbet@lwn.net>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com,
	dave.hansen@linux.intel.com, luto@kernel.org,
	"Peter Zijlstra" <peterz@infradead.org>,
	viro@zeniv.linux.org.uk,
	"Andrew Morton" <akpm@linux-foundation.org>,
	paulmck@kernel.org, mchehab+huawei@kernel.org,
	pawan.kumar.gupta@linux.intel.com,
	"Randy Dunlap" <rdunlap@infradead.org>,
	oneukum@suse.com, anshuman.khandual@arm.com, jroedel@suse.de,
	"Mina Almasry" <almasrymina@google.com>,
	"David Rientjes" <rientjes@google.com>,
	"Matthew Wilcox" <willy@infradead.org>,
	"Michal Hocko" <mhocko@suse.com>,
	"Song Bao Hua (Barry Song)" <song.bao.hua@hisilicon.com>,
	"David Hildenbrand" <david@redhat.com>,
	"HORIGUCHI NAOYA(堀口 直也)" <naoya.horiguchi@nec.com>,
	"Xiongchun duan" <duanxiongchun@bytedance.com>,
	linux-doc@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
	"Linux Memory Management List" <linux-mm@kvack.org>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [External] Re: [PATCH v12 04/13] mm/hugetlb: Free the vmemmap pages associated with each HugeTLB page
Date: Wed, 13 Jan 2021 15:27:31 -0800	[thread overview]
Message-ID: <a9baf18c-22c7-4946-9778-678f6bc808dc@oracle.com> (raw)
In-Reply-To: <20210113092028.GB24816@linux>

On 1/13/21 1:20 AM, Oscar Salvador wrote:
> On Tue, Jan 12, 2021 at 07:33:33PM +0800, Muchun Song wrote:
>>> It seems a bit odd to only pass "start" for the BUG_ON.
>>> Also, I kind of dislike the "addr += PAGE_SIZE" in vmemmap_pte_range.
>>>
>>> I wonder if adding a ".remap_start_addr" would make more sense.
>>> And adding it here with the vmemmap_remap_walk init.
>>
>> How about introducing a new function which aims to get the reuse
>> page? In this case, we can drop the BUG_ON() and "addr += PAGE_SIZE"
>> which is in vmemmap_pte_range. The vmemmap_remap_range only
>> does the remapping.
> 
> How would that look? 
> It might be good, dunno, but the point is, we should try to make the rules as
> simple as possible, dropping weird assumptions.
> 
> Callers of vmemmap_remap_free should know three things:
> 
> - Range to be remapped
> - Addr to remap to
> - Current implemantion needs addr to be remap to to be part of the complete
>   range
> 
> right?

And, current implementation needs must have remap addr be the first in the
complete range.  This is just because of the way the page tables are walked
for remapping.  The remap/reuse page must be found first so that the following
pages can be remapped to it.

That implementation seems to be the 'most efficient' for hugetlb pages where
we want vmemmap pages n+3 and beyond mapped to n+2.

In a more general purpose vmemmap_remap_free implementation, the reuse/remap
address would not necessarily need to be related to the range.  However, this
would require a separate page table walk/validation for the reuse address
independent of the range.  This may be what Muchun was proposing for 'a new
function which aims to get the reuse page'.

IMO, the decision on how to implement depends on the intended use case.
- If this is going to be hugetlb only (or perhaps generic huge page only)
  functionality, then I am OK with an efficient implementation that has
  some restrictions.
- If we see this being used for more general purpose remapping, then we
  should go with a more general purpose implementation.

Again, just my opinion.
-- 
Mike Kravetz

  reply	other threads:[~2021-01-14  1:55 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-06 14:19 [PATCH v12 00/13] Free some vmemmap pages of HugeTLB page Muchun Song
2021-01-06 14:19 ` [PATCH v12 01/13] mm/memory_hotplug: Factor out bootmem core functions to bootmem_info.c Muchun Song
2021-01-06 14:19 ` [PATCH v12 02/13] mm/hugetlb: Introduce a new config HUGETLB_PAGE_FREE_VMEMMAP Muchun Song
2021-01-06 14:19 ` [PATCH v12 03/13] mm: Introduce VM_WARN_ON_PAGE macro Muchun Song
2021-01-13 22:30   ` Mike Kravetz
2021-01-14  2:50     ` [External] " Muchun Song
2021-01-06 14:19 ` [PATCH v12 04/13] mm/hugetlb: Free the vmemmap pages associated with each HugeTLB page Muchun Song
2021-01-12  8:04   ` Oscar Salvador
2021-01-12 11:33     ` [External] " Muchun Song
2021-01-13  9:20       ` Oscar Salvador
2021-01-13 23:27         ` Mike Kravetz [this message]
2021-01-14 10:54           ` Muchun Song
2021-01-14 11:52             ` Oscar Salvador
2021-01-14 13:05               ` Muchun Song
2021-01-14 10:57     ` Muchun Song
2021-01-06 14:19 ` [PATCH v12 05/13] mm/hugetlb: Defer freeing of HugeTLB pages Muchun Song
2021-01-06 14:19 ` [PATCH v12 06/13] mm/hugetlb: Allocate the vmemmap pages associated with each HugeTLB page Muchun Song
2021-01-06 14:19 ` [PATCH v12 07/13] mm/hugetlb: Set the PageHWPoison to the raw error page Muchun Song
2021-01-06 14:19 ` [PATCH v12 08/13] mm/hugetlb: Flush work when dissolving a HugeTLB page Muchun Song
2021-01-06 14:19 ` [PATCH v12 09/13] mm/hugetlb: Introduce PageHugeInflight Muchun Song
2021-01-06 14:19 ` [PATCH v12 10/13] mm/hugetlb: Add a kernel parameter hugetlb_free_vmemmap Muchun Song
2021-01-06 14:19 ` [PATCH v12 11/13] mm/hugetlb: Introduce nr_free_vmemmap_pages in the struct hstate Muchun Song
2021-01-06 14:19 ` [PATCH v12 12/13] mm/hugetlb: Gather discrete indexes of tail page Muchun Song
2021-01-14  0:18   ` Mike Kravetz
2021-01-14  2:47     ` [External] " Muchun Song
2021-01-06 14:19 ` [PATCH v12 13/13] mm/hugetlb: Optimize the code with the help of the compiler Muchun Song

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a9baf18c-22c7-4946-9778-678f6bc808dc@oracle.com \
    --to=mike.kravetz@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=almasrymina@google.com \
    --cc=anshuman.khandual@arm.com \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=duanxiongchun@bytedance.com \
    --cc=hpa@zytor.com \
    --cc=jroedel@suse.de \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=mchehab+huawei@kernel.org \
    --cc=mhocko@suse.com \
    --cc=mingo@redhat.com \
    --cc=naoya.horiguchi@nec.com \
    --cc=oneukum@suse.com \
    --cc=osalvador@suse.de \
    --cc=paulmck@kernel.org \
    --cc=pawan.kumar.gupta@linux.intel.com \
    --cc=peterz@infradead.org \
    --cc=rdunlap@infradead.org \
    --cc=rientjes@google.com \
    --cc=song.bao.hua@hisilicon.com \
    --cc=songmuchun@bytedance.com \
    --cc=tglx@linutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).