[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20170929145529.GA1659@gmail.com>
Date: Fri, 29 Sep 2017 16:55:29 +0200
From: Alexandru Moise <00moses.alexander00@...il.com>
To: "Kirill A. Shutemov" <kirill@...temov.name>
Cc: akpm@...ux-foundation.org, mhocko@...e.com,
aneesh.kumar@...ux.vnet.ibm.com, n-horiguchi@...jp.nec.com,
mike.kravetz@...cle.com, khandual@...ux.vnet.ibm.com,
punit.agrawal@....com, gerald.schaefer@...ibm.com,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] mm/madvise: enable soft offline of HugeTLB pages at PUD
level
On Fri, Sep 29, 2017 at 04:55:54PM +0300, Kirill A. Shutemov wrote:
> On Wed, Sep 13, 2017 at 12:10:47PM +0200, Alexandru Moise wrote:
> > since 94310cb we've been able to soft offline 1G hugepages at the PGD
> > level, however x86_64 gigantic hugepages are at the PUD level so we
> > should add an extra check to account for hstate order at PUD level.
>
> Have you tested other cases affected by the change? It allows migration of
> 1G pages in general, which might be problematic.
Yes true, I could have done a better job explaining this in the commit message.
>
> It also makes these pages allocated with GFP_HIGHUSER_MOVABLE instead of
> GFP_HIGHUSER. Any side effects there we should consider?
Well, it makes hugepages_treat_as_movable sysctl pointless for one.
Perhaps the below patch would be a good idea, to make this behavior
optional rather.
../Alex
>
> > I'm not sure if this also applies to 5 level page tables on x86_64
> > however. Tested with 4 level pagetable.
>
> There's nothing changed in this regard in 5-level paging mode. PUD is
> still one gig and there are no new page sizes.
>
> --
> Kirill A. Shutemov
---
mm/hugetlb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 424b0ef08a60..ab28de0122af 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -926,7 +926,7 @@ static struct page *dequeue_huge_page_nodemask(struct hstate *h, gfp_t gfp_mask,
/* Movability of hugepages depends on migration support. */
static inline gfp_t htlb_alloc_mask(struct hstate *h)
{
- if (hugepages_treat_as_movable || hugepage_migration_supported(h))
+ if (hugepages_treat_as_movable && hugepage_migration_supported(h))
return GFP_HIGHUSER_MOVABLE;
else
return GFP_HIGHUSER;
--
2.14.2
Powered by blists - more mailing lists