Johannes Weiner
b32c5e0ae6
mm: don't wake kswapd prematurely when watermark boosting is disabled
...
[ Upstream commit 597c892038e08098b17ccfe65afd9677e6979800 ]
On 2-node NUMA hosts we see bursts of kswapd reclaim and subsequent
pressure spikes and stalls from cache refaults while there is plenty of
free memory in the system.
Usually, kswapd is woken up when all eligible nodes in an allocation are
full. But the code related to watermark boosting can wake kswapd on one
full node while the other one is mostly empty. This may be justified to
fight fragmentation, but is currently unconditionally done whether
watermark boosting is occurring or not.
In our case, many of our workloads' throughput scales with available
memory, and pure utilization is a more tangible concern than trends
around longer-term fragmentation. As a result we generally disable
watermark boosting.
Wake kswapd only woken when watermark boosting is requested.
Link: https://lkml.kernel.org/r/20201020175833.397286-1-hannes@cmpxchg.org
Fixes: 1c30844d2d ("mm: reclaim small amounts of memory when an external fragmentation event occurs")
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-12-30 11:51:27 +01:00
..
kasan
kasan: disable branch tracing for core runtime
2020-05-27 17:46:48 +02:00
backing-dev.c
bdi: add a ->dev_name field to struct backing_dev_info
2020-05-14 07:58:30 +02:00
balloon_compaction.c
cleancache.c
cma.c
cma: don't quit at first error when activating reserved areas
2020-09-03 11:26:51 +02:00
cma.h
cma_debug.c
compaction.c
mm, compaction: make capture control handling safe wrt interrupts
2020-07-09 09:37:57 +02:00
debug.c
mm/debug.c: always print flags in dump_page()
2020-03-05 16:43:51 +01:00
debug_page_ref.c
dmapool.c
early_ioremap.c
fadvise.c
failslab.c
filemap.c
mm/error_inject: Fix allow_error_inject function signatures.
2020-10-29 09:57:37 +01:00
frame_vector.c
mm: untag user pointers in get_vaddr_frames
2019-09-25 17:51:41 -07:00
frontswap.c
gup.c
mm/gup: fix gup_fast with dynamic page table folding
2020-10-01 13:18:24 +02:00
gup_benchmark.c
mm/gup: fix memory leak in __gup_benchmark_ioctl
2020-01-09 10:20:00 +01:00
highmem.c
hmm.c
huge_memory.c
mm/userfaultfd: do not access vma->vm_mm after calling handle_userfault()
2020-11-24 13:29:24 +01:00
hugetlb.c
mm/hugetlb: fix a race between hugetlb sysctl handlers
2020-09-09 19:12:37 +02:00
hugetlb_cgroup.c
mm: hugetlb: switch to css_tryget() in hugetlb_cgroup_charge_cgroup()
2019-11-15 18:34:00 -08:00
hwpoison-inject.c
init-mm.c
mm/init-mm.c: include <linux/mman.h> for vm_committed_as_batch
2019-10-19 06:32:32 -04:00
internal.h
mm: drop mmap_sem before calling balance_dirty_pages() in write fault
2020-01-09 10:19:55 +01:00
interval_tree.c
Kconfig
mm/zsmalloc.c: drop ZSMALLOC_PGTABLE_MAPPING
2020-12-16 10:56:59 +01:00
Kconfig.debug
mm, page_owner, debug_pagealloc: save and dump freeing stack trace
2019-09-24 15:54:08 -07:00
khugepaged.c
mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected by khugepaged
2020-10-14 10:33:05 +02:00
kmemleak-test.c
kmemleak.c
mm/kmemleak.c: use address-of operator on section symbols
2020-10-01 13:17:53 +02:00
ksm.c
mm/ksm: fix NULL pointer dereference when KSM zero page is enabled
2020-04-29 16:33:15 +02:00
list_lru.c
mm: list_lru: set shrinker map bit when child nr_items is not zero
2020-12-11 13:23:31 +01:00
maccess.c
uaccess: Add non-pagefault user-space write function
2020-01-17 19:48:40 +01:00
madvise.c
mm: validate pmd after splitting
2020-10-01 13:18:21 +02:00
Makefile
mm: silence -Woverride-init/initializer-overrides
2019-09-24 15:54:10 -07:00
memblock.c
mm: memblock: do not enforce current limit for memblock_phys* family
2019-10-19 06:32:32 -04:00
memcontrol.c
mm: memcg/slab: fix root memcg vmstats
2020-11-24 13:29:24 +01:00
memfd.c
mm: page cache: store only head pages in i_pages
2019-09-24 15:54:08 -07:00
memory-failure.c
mm/memory-failure.c: don't access uninitialized memmaps in memory_failure()
2019-10-19 06:32:31 -04:00
memory.c
mm: avoid data corruption on CoW fault into PFN-mapped VMA
2020-10-01 13:17:39 +02:00
memory_hotplug.c
mm: don't rely on system state to detect hot-plug operations
2020-10-07 08:01:30 +02:00
mempolicy.c
mm: mempolicy: fix potential pte_unmap_unlock pte error
2020-11-10 12:37:27 +01:00
mempool.c
memremap.c
mm/memory_hotplug: shrink zones when offlining memory
2020-01-09 10:19:56 +01:00
memtest.c
migrate.c
mm: move_pages: report the number of non-attempted pages
2020-02-11 04:35:13 -08:00
mincore.c
mm: untag user pointers passed to memory syscalls
2019-09-25 17:51:41 -07:00
mlock.c
mm: untag user pointers passed to memory syscalls
2019-09-25 17:51:41 -07:00
mm_init.c
mmap.c
mm/mmap.c: initialize align_offset explicitly for vm_unmapped_area
2020-10-01 13:17:54 +02:00
mmu_context.c
mm: fix kthread_use_mm() vs TLB invalidate
2020-09-03 11:26:51 +02:00
mmu_gather.c
mm/mmu_gather: invalidate TLB correctly on batch allocation failure and flush
2020-02-11 04:35:42 -08:00
mmu_notifier.c
mm/mmu_notifiers: use the right return code for WARN_ON
2019-11-06 08:47:50 -08:00
mmzone.c
mprotect.c
mm, numa: fix bad pmd by atomically check for pmd_trans_huge when marking page tables prot_numa
2020-03-12 13:00:19 +01:00
mremap.c
mm: Fix mremap not considering huge pmd devmap
2020-06-07 13:18:46 +02:00
msync.c
mm: untag user pointers passed to memory syscalls
2019-09-25 17:51:41 -07:00
nommu.c
x86/mm: split vmalloc_sync_all()
2020-03-25 08:25:58 +01:00
oom_kill.c
mm, oom_adj: don't loop through tasks in __set_oom_adj when not necessary
2020-10-29 09:57:45 +01:00
page-writeback.c
mm/page-writeback.c: avoid potential division by zero in wb_min_max_ratio()
2020-01-23 08:22:41 +01:00
page_alloc.c
mm: don't wake kswapd prematurely when watermark boosting is disabled
2020-12-30 11:51:27 +01:00
page_counter.c
mm/page_counter.c: fix protection usage propagation
2020-08-21 13:05:27 +02:00
page_ext.c
mm, page_owner: fix off-by-one error in __set_page_owner_handle()
2019-10-14 15:04:00 -07:00
page_idle.c
page_io.c
mm/page_io.c: do not free shared swap slots
2019-11-15 18:34:00 -08:00
page_isolation.c
mm/memory_hotplug: drain per-cpu pages again during memory offline
2020-09-23 12:40:47 +02:00
page_owner.c
mm/page_owner: change split_page_owner to take a count
2020-10-29 09:57:52 +01:00
page_poison.c
mm/page_poison.c: fix a typo in a comment
2019-09-24 15:54:08 -07:00
page_vma_mapped.c
mm: introduce page_size()
2019-09-24 15:54:08 -07:00
pagewalk.c
mm: pagewalk: fix termination condition in walk_pte_range()
2020-10-01 13:17:30 +02:00
percpu-internal.h
percpu-km.c
percpu-stats.c
percpu-vm.c
percpu.c
percpu: fix first chunk size calculation for populated bitmap
2020-09-23 12:40:45 +02:00
pgtable-generic.c
process_vm_access.c
readahead.c
rmap.c
mm: include <linux/huge_mm.h> for is_vma_temporary_stack
2019-10-19 06:32:32 -04:00
rodata_test.c
shmem.c
shmem: fix possible deadlocks on shmlock_user_lock
2020-05-20 08:20:03 +02:00
shuffle.c
mm/shuffle: don't move pages between zones and don't read garbage memmaps
2020-09-03 11:26:51 +02:00
shuffle.h
slab.c
mm, debug_pagealloc: don't rely on static keys too early
2020-01-23 08:22:40 +01:00
slab.h
mm: slab: make page_cgroup_ino() to recognize non-compound slab pages properly
2019-11-06 08:47:50 -08:00
slab_common.c
mm: memcg/slab: fix memory leak at non-root kmem_cache destroy
2020-07-29 10:18:44 +02:00
slob.c
mm, sl[aou]b: guarantee natural alignment for kmalloc(power-of-two)
2019-10-07 15:47:20 -07:00
slub.c
mm/slub: fix panic in slab_alloc_node()
2020-11-18 19:20:30 +01:00
sparse-vmemmap.c
sparse.c
mm/sparse: fix kernel crash with pfn_section_valid check
2020-04-01 11:02:03 +02:00
swap.c
mm: introduce MADV_COLD
2019-09-25 17:51:41 -07:00
swap_cgroup.c
swap_slots.c
swap_state.c
mm/swap_state: fix a data race in swapin_nr_pages
2020-10-01 13:18:08 +02:00
swapfile.c
mm/swapfile: do not sleep with a spin lock held
2020-12-11 13:23:31 +01:00
truncate.c
mm/thp: allow dropping THP from page cache
2019-10-19 06:32:33 -04:00
usercopy.c
userfaultfd.c
util.c
mm: add kvfree_sensitive() for freeing sensitive data objects
2020-06-17 16:40:23 +02:00
vmacache.c
vmalloc.c
mm/vunmap: add cond_resched() in vunmap_pmd_range
2020-09-03 11:26:52 +02:00
vmpressure.c
mm/vmpressure.c: fix a signedness bug in vmpressure_register_event()
2019-10-07 15:47:19 -07:00
vmscan.c
mm/vmscan.c: fix data races using kswapd_classzone_idx
2020-10-01 13:17:53 +02:00
vmstat.c
mm, vmstat: reduce zone->lock holding time by /proc/pagetypeinfo
2019-11-06 08:47:50 -08:00
workingset.c
z3fold.c
mm/z3fold.c: claim page in the beginning of free
2019-10-07 15:47:19 -07:00
zbud.c
zpool.c
zpool: add malloc_support_movable to zpool_driver
2019-09-24 15:54:12 -07:00
zsmalloc.c
mm/zsmalloc.c: drop ZSMALLOC_PGTABLE_MAPPING
2020-12-16 10:56:59 +01:00
zswap.c
zswap: do not map same object twice
2019-09-24 15:54:12 -07:00