All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] mm/page_reporting: Adjust threshold according to MAX_ORDER
@ 2021-06-01  3:33 Gavin Shan
  2021-06-01  8:01 ` David Hildenbrand
  2021-06-02  0:03 ` Andrew Morton
  0 siblings, 2 replies; 25+ messages in thread
From: Gavin Shan @ 2021-06-01  3:33 UTC (permalink / raw)
  To: linux-mm; +Cc: linux-kernel, alexander.h.duyck, david, akpm, shan.gavin

The PAGE_REPORTING_MIN_ORDER is equal to @pageblock_order, taken as
minimal order (threshold) to trigger page reporting. The page reporting
is never triggered with the following configurations and settings on
aarch64. In the particular scenario, the page reporting won't be triggered
until the largest (2 ^ (MAX_ORDER-1)) free area is achieved from the
page freeing. The condition is very hard, or even impossible to be met.

  CONFIG_ARM64_PAGE_SHIFT:              16
  CONFIG_HUGETLB_PAGE:                  Y
  CONFIG_HUGETLB_PAGE_SIZE_VARIABLE:    N
  pageblock_order:                      13
  CONFIG_FORCE_MAX_ZONEORDER:           14
  MAX_ORDER:                            14

The issue can be reproduced in VM, running kernel with above configurations
and settings. The 'memhog' is used inside the VM to access 512MB anonymous
area. The QEMU's RSS doesn't drop accordingly after 'memhog' exits.

  /home/gavin/sandbox/qemu.main/build/qemu-system-aarch64          \
  -accel kvm -machine virt,gic-version=host                        \
  -cpu host -smp 8,sockets=2,cores=4,threads=1 -m 4096M,maxmem=64G \
  -object memory-backend-ram,id=mem0,size=2048M                    \
  -object memory-backend-ram,id=mem1,size=2048M                    \
  -numa node,nodeid=0,cpus=0-3,memdev=mem0                         \
  -numa node,nodeid=1,cpus=4-7,memdev=mem1                         \
    :                                                              \
  -device virtio-balloon-pci,id=balloon0,free-page-reporting=yes

This tries to fix the issue by adjusting the threshold to the smaller value
of @pageblock_order and (MAX_ORDER/2). With this applied, the QEMU's RSS
drops after 'memhog' exits.

Signed-off-by: Gavin Shan <gshan@redhat.com>
---
 mm/page_reporting.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/mm/page_reporting.h b/mm/page_reporting.h
index 2c385dd4ddbd..5dae3d171004 100644
--- a/mm/page_reporting.h
+++ b/mm/page_reporting.h
@@ -10,9 +10,10 @@
 #include <linux/pgtable.h>
 #include <linux/scatterlist.h>
 
-#define PAGE_REPORTING_MIN_ORDER	pageblock_order
-
 #ifdef CONFIG_PAGE_REPORTING
+#define PAGE_REPORTING_MIN_ORDER	\
+	min_t(unsigned int, pageblock_order, (MAX_ORDER / 2))
+
 DECLARE_STATIC_KEY_FALSE(page_reporting_enabled);
 void __page_reporting_notify(void);
 
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2021-06-21 13:44 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-01  3:33 [RFC PATCH] mm/page_reporting: Adjust threshold according to MAX_ORDER Gavin Shan
2021-06-01  8:01 ` David Hildenbrand
2021-06-11  7:44   ` Gavin Shan
2021-06-14 11:03     ` David Hildenbrand
2021-06-15  2:26       ` Alexander Duyck
2021-06-15  2:26         ` Alexander Duyck
2021-06-16  9:10         ` Gavin Shan
2021-06-16  8:03           ` David Hildenbrand
2021-06-16 13:16             ` Gavin Shan
2021-06-16 11:20               ` David Hildenbrand
2021-06-16 13:58                 ` Gavin Shan
2021-06-16 12:07                   ` David Hildenbrand
2021-06-21  5:16                     ` Gavin Shan
2021-06-16 14:15           ` Alexander Duyck
2021-06-16 14:15             ` Alexander Duyck
2021-06-21  7:03             ` Gavin Shan
2021-06-21  7:52             ` Gavin Shan
2021-06-21 13:43               ` Alexander Duyck
2021-06-21 13:43                 ` Alexander Duyck
2021-06-16  1:53       ` Gavin Shan
2021-06-16  7:59         ` David Hildenbrand
2021-06-16 12:59           ` Gavin Shan
2021-06-16 11:15             ` David Hildenbrand
2021-06-02  0:03 ` Andrew Morton
2021-06-11  2:54   ` Gavin Shan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.