From: Muchun Song <songmuchun@bytedance.com>
To: Michal Hocko <mhocko@suse.com>
Cc: Jonathan Corbet <corbet@lwn.net>,
Mike Kravetz <mike.kravetz@oracle.com>,
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>,
Oscar Salvador <osalvador@suse.de>,
"Song Bao Hua (Barry Song)" <song.bao.hua@hisilicon.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 v6 09/16] mm/hugetlb: Defer freeing of HugeTLB pages
Date: Tue, 24 Nov 2020 20:45:30 +0800 [thread overview]
Message-ID: <CAMZfGtV=_=f-AybncRDxyp9FB3e499RuPCz5B-8R2Or7285MrQ@mail.gmail.com> (raw)
In-Reply-To: <20201124115109.GW27488@dhcp22.suse.cz>
On Tue, Nov 24, 2020 at 7:51 PM Michal Hocko <mhocko@suse.com> wrote:
>
> On Tue 24-11-20 17:52:52, Muchun Song wrote:
> > In the subsequent patch, we will allocate the vmemmap pages when free
> > HugeTLB pages. But update_and_free_page() is called from a non-task
> > context(and hold hugetlb_lock), so we can defer the actual freeing in
> > a workqueue to prevent use GFP_ATOMIC to allocate the vmemmap pages.
>
> This has been brought up earlier without any satisfying answer. Do we
> really have bother with the freeing from the pool and reconstructing the
> vmemmap page tables? Do existing usecases really require such a dynamic
> behavior? In other words, wouldn't it be much simpler to allow to use
If someone wants to free a HugeTLB page, there is no way to do that if we
do not allow this behavior. When do we need this? On our server, we will
allocate a lot of HugeTLB pages for SPDK or virtualization. Sometimes,
we want to debug some issues and want to apt install some debug tools,
but if the host has little memory and the install operation can be failed
because of no memory. In this time, we can try to free some HugeTLB
pages to buddy in order to continue debugging. So maybe we need this.
> hugetlb pages with sparse vmemmaps only for the boot time reservations
> and never allow them to be freed back to the allocator. This is pretty
> restrictive, no question about that, but it would drop quite some code
Yeah, if we do not allow freeing the HugeTLB page to buddy, it actually
can drop some code. But I think that it only drop this one and next one
patch. It seems not a lot. And if we drop this patch, we need to add some
another code to do the boot time reservations and other code to disallow
freeing HugeTLB pages. So why not support freeing now.
> AFAICS and the resulting series would be much easier to review really
> carefully. Additional enhancements can be done on top with specifics
> about usecases which require more flexibility.
The code of allocating vmemmap pages for the HugeTLB page is very
similar to the freeing vmemmap pages. The two operations are opposite.
I think that if someone can understand the freeing path, it is also easy
for him to understand the allcating path. If you look at close to this patch,
I believe that it is easy for you.
>
> > Signed-off-by: Muchun Song <songmuchun@bytedance.com>
> > ---
> > mm/hugetlb.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++------
> > mm/hugetlb_vmemmap.c | 5 ---
> > mm/hugetlb_vmemmap.h | 10 ++++++
> > 3 files changed, 95 insertions(+), 16 deletions(-)
> --
> Michal Hocko
> SUSE Labs
--
Yours,
Muchun
next prev parent reply other threads:[~2020-11-24 12:46 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-24 9:52 [PATCH v6 00/16] Free some vmemmap pages of hugetlb page Muchun Song
2020-11-24 9:52 ` [PATCH v6 01/16] mm/memory_hotplug: Move bootmem info registration API to bootmem_info.c Muchun Song
2021-06-10 12:15 ` chengkaitao
2020-11-24 9:52 ` [PATCH v6 02/16] mm/memory_hotplug: Move {get,put}_page_bootmem() " Muchun Song
2020-11-24 9:52 ` [PATCH v6 03/16] mm/hugetlb: Introduce a new config HUGETLB_PAGE_FREE_VMEMMAP Muchun Song
2020-11-24 9:52 ` [PATCH v6 04/16] mm/hugetlb: Introduce nr_free_vmemmap_pages in the struct hstate Muchun Song
2020-11-24 9:52 ` [PATCH v6 05/16] mm/bootmem_info: Introduce {free,prepare}_vmemmap_page() Muchun Song
2020-11-24 9:52 ` [PATCH v6 06/16] mm/hugetlb: Disable freeing vmemmap if struct page size is not power of two Muchun Song
2020-11-24 9:52 ` [PATCH v6 07/16] x86/mm/64: Disable PMD page mapping of vmemmap Muchun Song
2020-11-24 10:24 ` Oscar Salvador
2020-11-24 10:31 ` Song Bao Hua (Barry Song)
2020-11-24 11:13 ` [External] " Muchun Song
2020-11-24 9:52 ` [PATCH v6 08/16] mm/hugetlb: Free the vmemmap pages associated with each hugetlb page Muchun Song
2020-11-24 9:52 ` [PATCH v6 09/16] mm/hugetlb: Defer freeing of HugeTLB pages Muchun Song
2020-11-24 11:51 ` Michal Hocko
2020-11-24 12:45 ` Muchun Song [this message]
2020-11-24 13:14 ` [External] " Michal Hocko
2020-11-24 9:52 ` [PATCH v6 10/16] mm/hugetlb: Allocate the vmemmap pages associated with each hugetlb page Muchun Song
2020-11-24 9:52 ` [PATCH v6 11/16] mm/hugetlb: Introduce remap_huge_page_pmd_vmemmap helper Muchun Song
2020-11-24 9:52 ` [PATCH v6 12/16] mm/hugetlb: Set the PageHWPoison to the raw error page Muchun Song
2020-11-24 9:52 ` [PATCH v6 13/16] mm/hugetlb: Flush work when dissolving hugetlb page Muchun Song
2020-11-24 9:52 ` [PATCH v6 14/16] mm/hugetlb: Add a kernel parameter hugetlb_free_vmemmap Muchun Song
2020-11-24 10:53 ` Song Bao Hua (Barry Song)
2020-11-24 11:07 ` [External] " Muchun Song
2020-11-24 9:52 ` [PATCH v6 15/16] mm/hugetlb: Gather discrete indexes of tail page Muchun Song
2020-11-24 9:52 ` [PATCH v6 16/16] mm/hugetlb: Add BUILD_BUG_ON to catch invalid usage of tail struct page 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='CAMZfGtV=_=f-AybncRDxyp9FB3e499RuPCz5B-8R2Or7285MrQ@mail.gmail.com' \
--to=songmuchun@bytedance.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=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=mike.kravetz@oracle.com \
--cc=mingo@redhat.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=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