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] [day] [month] [year] [list]
Message-ID: <1983025922.01764165001727.JavaMail.epsvc@epcpadp1new>
Date: Wed, 26 Nov 2025 18:54:35 +0530
From: Alok Rathore <alok.rathore@...sung.com>
To: Bharata B Rao <bharata@....com>
Cc: linux-kernel@...r.kernel.org, linux-mm@...ck.org,
	Jonathan.Cameron@...wei.com, dave.hansen@...el.com, gourry@...rry.net,
	mgorman@...hsingularity.net, mingo@...hat.com, peterz@...radead.org,
	raghavendra.kt@....com, riel@...riel.com, rientjes@...gle.com,
	sj@...nel.org, weixugc@...gle.com, willy@...radead.org,
	ying.huang@...ux.alibaba.com, ziy@...dia.com, dave@...olabs.net,
	nifan.cxl@...il.com, xuezhengchu@...wei.com, yiannis@...corp.com,
	akpm@...ux-foundation.org, david@...hat.com, byungchul@...com,
	kinseyho@...gle.com, joshua.hahnjy@...il.com, yuanchu@...gle.com,
	balbirs@...dia.com, shivankg@....com, alokrathore20@...il.com,
	cpgs@...sung.com
Subject: Re: [RFC PATCH v3 3/8] mm: Hot page tracking and promotion

On 10/11/25 10:53AM, Bharata B Rao wrote:
>This introduces a sub-system for collecting memory access
>information from different sources. It maintains the hotness
>information based on the access history and time of access.
>
>Additionally, it provides per-lowertier-node kernel threads
>(named kmigrated) that periodically promote the pages that
>are eligible for promotion.
>
>Sub-systems that generate hot page access info can report that
>using this API:
>
>int pghot_record_access(unsigned long pfn, int nid, int src,
>                        unsigned long time)
>
>@pfn: The PFN of the memory accessed
>@nid: The accessing NUMA node ID
>@src: The temperature source (sub-system) that generated the
>      access info
>@time: The access time in jiffies
>
>Some temperature sources may not provide the nid from which
>the page was accessed. This is true for sources that use
>page table scanning for PTE Accessed bit. For such sources,
>the default toptier node to which such pages should be promoted
>is hard coded.
>
>Also, the access time provided some sources may at best be
>considered approximate. This is especially true for hot pages
>detected by PTE A bit scanning.
>
>The hotness information is stored for every page of lower
>tier memory in an unsigned long variable that is part of
>mem_section data structure.
>
>kmigrated is a per-lowertier-node kernel thread that migrates
>the folios marked for migration in batches. Each kmigrated
>thread walks the PFN range spanning its node and checks
>for potential migration candidates.
>
>Signed-off-by: Bharata B Rao <bharata@....com>
>---
> include/linux/mmzone.h        |  14 ++
> include/linux/pghot.h         |  52 ++++
> include/linux/vm_event_item.h |   4 +
> mm/Kconfig                    |  11 +
> mm/Makefile                   |   1 +
> mm/mm_init.c                  |  10 +
> mm/page_ext.c                 |  11 +
> mm/pghot.c                    | 446 ++++++++++++++++++++++++++++++++++
> mm/vmstat.c                   |   4 +
> 9 files changed, 553 insertions(+)
> create mode 100644 include/linux/pghot.h
> create mode 100644 mm/pghot.c
>
>+

<snip>

>+/*
>+ * Walks the PFNs of the zone, isolates and migrates them in batches.
>+ */
>+static void kmigrated_walk_zone(unsigned long start_pfn, unsigned long end_pfn,
>+				int src_nid)
>+{
>+	int cur_nid = NUMA_NO_NODE;
>+	LIST_HEAD(migrate_list);
>+	int batch_count = 0;
>+	struct folio *folio;
>+	struct page *page;
>+	unsigned long pfn;
>+
>+	pfn = start_pfn;
>+	do {
>+		unsigned long nid = NUMA_NO_NODE, freq = 0, time = 0, nr = 1;
>+
>+		if (!pfn_valid(pfn))
>+			goto out_next;
>+
>+		page = pfn_to_online_page(pfn);
>+		if (!page)
>+			goto out_next;
>+
>+		folio = page_folio(page);
>+		nr = folio_nr_pages(folio);
>+		if (folio_nid(folio) != src_nid)
>+			goto out_next;
>+
>+		if (!folio_test_lru(folio))
>+			goto out_next;
>+
>+		if (pghot_get_hotness(pfn, &nid, &freq, &time))

Better to remove freq value, it’s not used later.

Regards,
Alok Rathore


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ