[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LSU.2.11.1604051505580.5965@eggly.anvils>
Date: Tue, 5 Apr 2016 15:07:29 -0700 (PDT)
From: Hugh Dickins <hughd@...gle.com>
To: Andrew Morton <akpm@...ux-foundation.org>
cc: "Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>,
Andrea Arcangeli <aarcange@...hat.com>,
Andres Lagar-Cavilla <andreslc@...gle.com>,
Yang Shi <yang.shi@...aro.org>, Ning Qu <quning@...il.com>,
David Rientjes <rientjes@...gle.com>,
linux-kernel@...r.kernel.org, linux-mm@...ck.org
Subject: [PATCH 31/31] huge tmpfs: no kswapd by default on sync allocations
From: Andres Lagar-Cavilla <andreslc@...gle.com>
This triggers early compaction abort while in process context, to
ameliorate mmap semaphore stalls.
Suggested-by: David Rientjes <rientjes@...gle.com>
Signed-off-by: Andres Lagar-Cavilla <andreslc@...gle.com>
Signed-off-by: Hugh Dickins <hughd@...gle.com>
---
Documentation/filesystems/tmpfs.txt | 5 +++--
mm/shmem.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
--- a/Documentation/filesystems/tmpfs.txt
+++ b/Documentation/filesystems/tmpfs.txt
@@ -194,8 +194,9 @@ to force huge off for all (intended for
/proc/sys/vm/shmem_huge_gfpmask (intended for experimentation only):
-Default 38146762, that is 0x24612ca:
-GFP_HIGHUSER_MOVABLE|__GFP_NOWARN|__GFP_THISNODE|__GFP_NORETRY.
+Default 4592330, that is 0x4612ca:
+GFP_HIGHUSER_MOVABLE|__GFP_NOWARN|__GFP_THISNODE|__GFP_NORETRY
+minus __GFP_KSWAPD_RECLAIM.
Write a gfpmask built from __GFP flags in include/linux/gfp.h, to experiment
with better alternatives for the synchronous huge tmpfs allocation used
when faulting or writing.
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -324,7 +324,8 @@ int shmem_huge __read_mostly;
int shmem_huge_recoveries __read_mostly = 8; /* concurrent recovery limit */
int shmem_huge_gfpmask __read_mostly =
- (int)(GFP_HIGHUSER_MOVABLE|__GFP_NOWARN|__GFP_THISNODE|__GFP_NORETRY);
+ (int)(GFP_HIGHUSER_MOVABLE|__GFP_NOWARN|__GFP_THISNODE|__GFP_NORETRY) &
+ ~__GFP_KSWAPD_RECLAIM;
int shmem_recovery_gfpmask __read_mostly =
(int)(GFP_HIGHUSER_MOVABLE|__GFP_NOWARN|__GFP_THISNODE);
Powered by blists - more mailing lists