lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 20 Mar 2024 02:42:18 +0000
From: kaiyang2@...cmu.edu
To: linux-mm@...ck.org,
	linux-kernel@...r.kernel.org
Cc: Kaiyang Zhao <kaiyang2@...cmu.edu>,
	hannes@...xchg.org,
	ziy@...dia.com,
	dskarlat@...cmu.edu
Subject: [RFC PATCH 7/7] exports the number of pages scanned on behalf of movable/unmovable allocations

From: Kaiyang Zhao <kaiyang2@...cmu.edu>

exports the number of pages scanned on behalf of movable/unmovable
allocations in vmstat

Signed-off-by: Kaiyang Zhao <zh_kaiyang@...mail.com>
---
 include/linux/vm_event_item.h |  2 ++
 mm/vmscan.c                   | 11 +++++++++++
 mm/vmstat.c                   |  2 ++
 3 files changed, 15 insertions(+)

diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
index c9183117c8f7..dcfff56c6d29 100644
--- a/include/linux/vm_event_item.h
+++ b/include/linux/vm_event_item.h
@@ -50,6 +50,8 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
 		PGSCAN_DIRECT_THROTTLE,
 		PGSCAN_ANON,
 		PGSCAN_FILE,
+		PGSCAN_MOVABLE,    /* number of pages scanned on behalf of a movable allocation */
+		PGSCAN_UNMOVABLE,
 		PGSTEAL_ANON,
 		PGSTEAL_FILE,
 #ifdef CONFIG_NUMA
diff --git a/mm/vmscan.c b/mm/vmscan.c
index ed0f47e2e810..4eadf0254918 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -904,6 +904,12 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl,
 		cond_resched();
 	}
 
+	/* Arbitrarily consider 16 pages scanned */
+	if (is_migrate_movable(gfp_migratetype(shrinkctl->gfp_mask)))
+		count_vm_events(PGSCAN_MOVABLE, 16);
+	else
+		count_vm_events(PGSCAN_UNMOVABLE, 16);
+
 	/*
 	 * The deferred work is increased by any new work (delta) that wasn't
 	 * done, decreased by old deferred work that was done now.
@@ -2580,6 +2586,11 @@ static unsigned long shrink_inactive_list(unsigned long nr_to_scan,
 	__count_memcg_events(lruvec_memcg(lruvec), item, nr_scanned);
 	__count_vm_events(PGSCAN_ANON + file, nr_scanned);
 
+	if (is_migrate_movable(gfp_migratetype(sc->gfp_mask)))
+		__count_vm_events(PGSCAN_MOVABLE, nr_scanned);
+	else
+		__count_vm_events(PGSCAN_UNMOVABLE, nr_scanned);
+
 	spin_unlock_irq(&lruvec->lru_lock);
 
 	if (nr_taken == 0)
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 444740605f2f..56062d53a36c 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1281,6 +1281,8 @@ const char * const vmstat_text[] = {
 	"pgscan_direct_throttle",
 	"pgscan_anon",
 	"pgscan_file",
+	"pgscan_by_movable",
+	"pgscan_by_unmovable",
 	"pgsteal_anon",
 	"pgsteal_file",
 
-- 
2.40.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ