From: Andres Lagar-Cavilla <andreslc@xxxxxxxxxx> This triggers early compaction abort while in process context, to ameliorate mmap semaphore stalls. Suggested-by: David Rientjes <rientjes@xxxxxxxxxx> Signed-off-by: Andres Lagar-Cavilla <andreslc@xxxxxxxxxx> Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx> --- 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); -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>