From: Philip Li <philip.li@intel.com>
To: "Zhijian Li (Fujitsu)" <lizhijian@fujitsu.com>
Cc: kernel test robot <lkp@intel.com>,
"oe-kbuild-all@lists.linux.dev" <oe-kbuild-all@lists.linux.dev>
Subject: Re: [PATCH RFC] mm: memory-tiering: Fix PGPROMOTE_CANDIDATE accounting
Date: Fri, 20 Jun 2025 10:22:43 +0800 [thread overview]
Message-ID: <aFTF87VnF/kj3A5p@rli9-mobl> (raw)
In-Reply-To: <2fd61ee3-2028-4a15-a574-f5f480f00bd9@fujitsu.com>
On Fri, Jun 20, 2025 at 02:04:46AM +0000, Zhijian Li (Fujitsu) wrote:
> Thanks for the report. I will update it.
hi Zhijian, you are welcome :)
>
>
>
> On 20/06/2025 06:06, kernel test robot wrote:
> > Hi Li,
> >
> > [This is a private test report for your RFC patch.]
> > kernel test robot noticed the following build errors:
> >
> > [auto build test ERROR on akpm-mm/mm-everything]
> >
> > url: https://github.com/intel-lab-lkp/linux/commits/Li-Zhijian/mm-memory-tiering-Fix-PGPROMOTE_CANDIDATE-accounting/20250619-155351
> > base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
> > patch link: https://lore.kernel.org/r/20250619075245.3272384-1-lizhijian%40fujitsu.com
> > patch subject: [PATCH RFC] mm: memory-tiering: Fix PGPROMOTE_CANDIDATE accounting
> > config: x86_64-buildonly-randconfig-005-20250620 (https://download.01.org/0day-ci/archive/20250620/202506200524.r3rTtqLQ-lkp@intel.com/config)
> > compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250620/202506200524.r3rTtqLQ-lkp@intel.com/reproduce)
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202506200524.r3rTtqLQ-lkp@intel.com/
> >
> > All errors (new ones prefixed by >>):
> >
> > kernel/sched/fair.c: In function 'should_numa_migrate_memory':
> >>> kernel/sched/fair.c:1945:17: error: expected ',' or ';' before 'pgdat'
> > 1945 | pgdat = NODE_DATA(dst_nid);
> > | ^~~~~
> >
> >
> > vim +1945 kernel/sched/fair.c
> >
> > c959924b0dc53b Ying Huang 2022-07-13 1921
> > 8c9ae56dc73b5a Kefeng Wang 2023-09-21 1922 bool should_numa_migrate_memory(struct task_struct *p, struct folio *folio,
> > 10f39042711ba2 Rik van Riel 2014-01-27 1923 int src_nid, int dst_cpu)
> > 10f39042711ba2 Rik van Riel 2014-01-27 1924 {
> > cb361d8cdef699 Jann Horn 2019-07-16 1925 struct numa_group *ng = deref_curr_numa_group(p);
> > 10f39042711ba2 Rik van Riel 2014-01-27 1926 int dst_nid = cpu_to_node(dst_cpu);
> > 10f39042711ba2 Rik van Riel 2014-01-27 1927 int last_cpupid, this_cpupid;
> > 10f39042711ba2 Rik van Riel 2014-01-27 1928
> > 3fb43636876d98 Byungchul Park 2024-02-19 1929 /*
> > 3fb43636876d98 Byungchul Park 2024-02-19 1930 * Cannot migrate to memoryless nodes.
> > 3fb43636876d98 Byungchul Park 2024-02-19 1931 */
> > 3fb43636876d98 Byungchul Park 2024-02-19 1932 if (!node_state(dst_nid, N_MEMORY))
> > 3fb43636876d98 Byungchul Park 2024-02-19 1933 return false;
> > 3fb43636876d98 Byungchul Park 2024-02-19 1934
> > 33024536bafd91 Ying Huang 2022-07-13 1935 /*
> > 33024536bafd91 Ying Huang 2022-07-13 1936 * The pages in slow memory node should be migrated according
> > 33024536bafd91 Ying Huang 2022-07-13 1937 * to hot/cold instead of private/shared.
> > 33024536bafd91 Ying Huang 2022-07-13 1938 */
> > 2a28713a67fd28 Zi Yan 2024-07-24 1939 if (folio_use_access_time(folio)) {
> > 33024536bafd91 Ying Huang 2022-07-13 1940 struct pglist_data *pgdat;
> > c959924b0dc53b Ying Huang 2022-07-13 1941 unsigned long rate_limit;
> > c959924b0dc53b Ying Huang 2022-07-13 1942 unsigned int latency, th, def_th;
> > 675e22ff5b390e Li Zhijian 2025-06-19 1943 long nr = folio_nr_pages(folio)
> > 33024536bafd91 Ying Huang 2022-07-13 1944
> > 33024536bafd91 Ying Huang 2022-07-13 @1945 pgdat = NODE_DATA(dst_nid);
> > c959924b0dc53b Ying Huang 2022-07-13 1946 if (pgdat_free_space_enough(pgdat)) {
> > c959924b0dc53b Ying Huang 2022-07-13 1947 /* workload changed, reset hot threshold */
> > c959924b0dc53b Ying Huang 2022-07-13 1948 pgdat->nbp_threshold = 0;
> > 675e22ff5b390e Li Zhijian 2025-06-19 1949 mod_node_page_state(pgdat, PGPROMOTE_CANDIDATE, nr);
> > 33024536bafd91 Ying Huang 2022-07-13 1950 return true;
> > c959924b0dc53b Ying Huang 2022-07-13 1951 }
> > 33024536bafd91 Ying Huang 2022-07-13 1952
> > c959924b0dc53b Ying Huang 2022-07-13 1953 def_th = sysctl_numa_balancing_hot_threshold;
> > c959924b0dc53b Ying Huang 2022-07-13 1954 rate_limit = sysctl_numa_balancing_promote_rate_limit << \
> > c959924b0dc53b Ying Huang 2022-07-13 1955 (20 - PAGE_SHIFT);
> > c959924b0dc53b Ying Huang 2022-07-13 1956 numa_promotion_adjust_threshold(pgdat, rate_limit, def_th);
> > c959924b0dc53b Ying Huang 2022-07-13 1957
> > c959924b0dc53b Ying Huang 2022-07-13 1958 th = pgdat->nbp_threshold ? : def_th;
> > 8c9ae56dc73b5a Kefeng Wang 2023-09-21 1959 latency = numa_hint_fault_latency(folio);
> > 33024536bafd91 Ying Huang 2022-07-13 1960 if (latency >= th)
> > 33024536bafd91 Ying Huang 2022-07-13 1961 return false;
> > 33024536bafd91 Ying Huang 2022-07-13 1962
> > 675e22ff5b390e Li Zhijian 2025-06-19 1963 return !numa_promotion_rate_limit(pgdat, rate_limit, nr);
> > 33024536bafd91 Ying Huang 2022-07-13 1964 }
> > 33024536bafd91 Ying Huang 2022-07-13 1965
> > 10f39042711ba2 Rik van Riel 2014-01-27 1966 this_cpupid = cpu_pid_to_cpupid(dst_cpu, current->pid);
> > 1b143cc77f2074 Kefeng Wang 2023-10-18 1967 last_cpupid = folio_xchg_last_cpupid(folio, this_cpupid);
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1968
> > 33024536bafd91 Ying Huang 2022-07-13 1969 if (!(sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING) &&
> > 33024536bafd91 Ying Huang 2022-07-13 1970 !node_is_toptier(src_nid) && !cpupid_valid(last_cpupid))
> > 33024536bafd91 Ying Huang 2022-07-13 1971 return false;
> > 33024536bafd91 Ying Huang 2022-07-13 1972
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1973 /*
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1974 * Allow first faults or private faults to migrate immediately early in
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1975 * the lifetime of a task. The magic number 4 is based on waiting for
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1976 * two full passes of the "multi-stage node selection" test that is
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1977 * executed below.
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1978 */
> > 98fa15f34cb379 Anshuman Khandual 2019-03-05 1979 if ((p->numa_preferred_nid == NUMA_NO_NODE || p->numa_scan_seq <= 4) &&
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1980 (cpupid_pid_unset(last_cpupid) || cpupid_match_pid(p, last_cpupid)))
> > 37355bdc5a1298 Mel Gorman 2018-10-01 1981 return true;
> > 10f39042711ba2 Rik van Riel 2014-01-27 1982
> > 10f39042711ba2 Rik van Riel 2014-01-27 1983 /*
> > 10f39042711ba2 Rik van Riel 2014-01-27 1984 * Multi-stage node selection is used in conjunction with a periodic
> > 10f39042711ba2 Rik van Riel 2014-01-27 1985 * migration fault to build a temporal task<->page relation. By using
> > 10f39042711ba2 Rik van Riel 2014-01-27 1986 * a two-stage filter we remove short/unlikely relations.
> > 10f39042711ba2 Rik van Riel 2014-01-27 1987 *
> > 10f39042711ba2 Rik van Riel 2014-01-27 1988 * Using P(p) ~ n_p / n_t as per frequentist probability, we can equate
> > 10f39042711ba2 Rik van Riel 2014-01-27 1989 * a task's usage of a particular page (n_p) per total usage of this
> > 10f39042711ba2 Rik van Riel 2014-01-27 1990 * page (n_t) (in a given time-span) to a probability.
> > 10f39042711ba2 Rik van Riel 2014-01-27 1991 *
> > 10f39042711ba2 Rik van Riel 2014-01-27 1992 * Our periodic faults will sample this probability and getting the
> > 10f39042711ba2 Rik van Riel 2014-01-27 1993 * same result twice in a row, given these samples are fully
> > 10f39042711ba2 Rik van Riel 2014-01-27 1994 * independent, is then given by P(n)^2, provided our sample period
> > 10f39042711ba2 Rik van Riel 2014-01-27 1995 * is sufficiently short compared to the usage pattern.
> > 10f39042711ba2 Rik van Riel 2014-01-27 1996 *
> > 10f39042711ba2 Rik van Riel 2014-01-27 1997 * This quadric squishes small probabilities, making it less likely we
> > 10f39042711ba2 Rik van Riel 2014-01-27 1998 * act on an unlikely task<->page relation.
> > 10f39042711ba2 Rik van Riel 2014-01-27 1999 */
> > 10f39042711ba2 Rik van Riel 2014-01-27 2000 if (!cpupid_pid_unset(last_cpupid) &&
> > 10f39042711ba2 Rik van Riel 2014-01-27 2001 cpupid_to_nid(last_cpupid) != dst_nid)
> > 10f39042711ba2 Rik van Riel 2014-01-27 2002 return false;
> > 10f39042711ba2 Rik van Riel 2014-01-27 2003
> > 10f39042711ba2 Rik van Riel 2014-01-27 2004 /* Always allow migrate on private faults */
> > 10f39042711ba2 Rik van Riel 2014-01-27 2005 if (cpupid_match_pid(p, last_cpupid))
> > 10f39042711ba2 Rik van Riel 2014-01-27 2006 return true;
> > 10f39042711ba2 Rik van Riel 2014-01-27 2007
> > 10f39042711ba2 Rik van Riel 2014-01-27 2008 /* A shared fault, but p->numa_group has not been set up yet. */
> > 10f39042711ba2 Rik van Riel 2014-01-27 2009 if (!ng)
> > 10f39042711ba2 Rik van Riel 2014-01-27 2010 return true;
> > 10f39042711ba2 Rik van Riel 2014-01-27 2011
> > 10f39042711ba2 Rik van Riel 2014-01-27 2012 /*
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2013 * Destination node is much more heavily used than the source
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2014 * node? Allow migration.
> > 10f39042711ba2 Rik van Riel 2014-01-27 2015 */
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2016 if (group_faults_cpu(ng, dst_nid) > group_faults_cpu(ng, src_nid) *
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2017 ACTIVE_NODE_FRACTION)
> > 10f39042711ba2 Rik van Riel 2014-01-27 2018 return true;
> > 10f39042711ba2 Rik van Riel 2014-01-27 2019
> > 10f39042711ba2 Rik van Riel 2014-01-27 2020 /*
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2021 * Distribute memory according to CPU & memory use on each node,
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2022 * with 3/4 hysteresis to avoid unnecessary memory migrations:
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2023 *
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2024 * faults_cpu(dst) 3 faults_cpu(src)
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2025 * --------------- * - > ---------------
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2026 * faults_mem(dst) 4 faults_mem(src)
> > 10f39042711ba2 Rik van Riel 2014-01-27 2027 */
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2028 return group_faults_cpu(ng, dst_nid) * group_faults(p, src_nid) * 3 >
> > 4142c3ebb685bb Rik van Riel 2016-01-25 2029 group_faults_cpu(ng, src_nid) * group_faults(p, dst_nid) * 4;
> > 10f39042711ba2 Rik van Riel 2014-01-27 2030 }
> > 10f39042711ba2 Rik van Riel 2014-01-27 2031
> >
next prev parent reply other threads:[~2025-06-20 2:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-19 7:52 [PATCH RFC] mm: memory-tiering: Fix PGPROMOTE_CANDIDATE accounting Li Zhijian
2025-06-19 22:06 ` kernel test robot
2025-06-20 2:04 ` Zhijian Li (Fujitsu)
2025-06-20 2:22 ` Philip Li [this message]
2025-06-20 6:28 ` Huang, Ying
2025-06-23 8:54 ` Zhijian Li (Fujitsu)
2025-06-24 2:46 ` Huang, Ying
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aFTF87VnF/kj3A5p@rli9-mobl \
--to=philip.li@intel.com \
--cc=lizhijian@fujitsu.com \
--cc=lkp@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.