All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC -V2 2/8] autonuma, memory tiering: Rate limit NUMA migration throughput
Date: Thu, 20 Feb 2020 12:51:27 +0800	[thread overview]
Message-ID: <202002201253.2FVrppWH%lkp@intel.com> (raw)
In-Reply-To: <20200218082634.1596727-3-ying.huang@intel.com>

[-- Attachment #1: Type: text/plain, Size: 5444 bytes --]

Hi Ying",

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on tip/sched/core]
[also build test ERROR on linux/master linus/master v5.6-rc2]
[cannot apply to next-20200219]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Huang-Ying/autonuma-Optimize-memory-placement-in-memory-tiering-system/20200220-044152
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 25ac227a25ac946e0356772012398cd1710a8bab
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   kernel//sched/fair.c: In function 'should_numa_migrate_memory':
>> kernel//sched/fair.c:1462:6: error: implicit declaration of function 'next_promotion_node'; did you mean 'next_memory_node'? [-Werror=implicit-function-declaration]
         next_promotion_node(src_nid) != -1) {
         ^~~~~~~~~~~~~~~~~~~
         next_memory_node
   cc1: some warnings being treated as errors

vim +1462 kernel//sched/fair.c

  1449	
  1450	bool should_numa_migrate_memory(struct task_struct *p, struct page * page,
  1451					int src_nid, int dst_cpu)
  1452	{
  1453		struct numa_group *ng = deref_curr_numa_group(p);
  1454		int dst_nid = cpu_to_node(dst_cpu);
  1455		int last_cpupid, this_cpupid;
  1456	
  1457		/*
  1458		 * If memory tiering mode is enabled, will try promote pages
  1459		 * in slow memory node to fast memory node.
  1460		 */
  1461		if (sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING &&
> 1462		    next_promotion_node(src_nid) != -1) {
  1463			struct pglist_data *pgdat;
  1464			unsigned long rate_limit;
  1465	
  1466			pgdat = NODE_DATA(dst_nid);
  1467			if (pgdat_free_space_enough(pgdat))
  1468				return true;
  1469	
  1470			rate_limit =
  1471				sysctl_numa_balancing_rate_limit << (20 - PAGE_SHIFT);
  1472			return numa_migration_check_rate_limit(pgdat, rate_limit,
  1473							       hpage_nr_pages(page));
  1474		}
  1475	
  1476		this_cpupid = cpu_pid_to_cpupid(dst_cpu, current->pid);
  1477		last_cpupid = page_cpupid_xchg_last(page, this_cpupid);
  1478	
  1479		/*
  1480		 * Allow first faults or private faults to migrate immediately early in
  1481		 * the lifetime of a task. The magic number 4 is based on waiting for
  1482		 * two full passes of the "multi-stage node selection" test that is
  1483		 * executed below.
  1484		 */
  1485		if ((p->numa_preferred_nid == NUMA_NO_NODE || p->numa_scan_seq <= 4) &&
  1486		    (cpupid_pid_unset(last_cpupid) || cpupid_match_pid(p, last_cpupid)))
  1487			return true;
  1488	
  1489		/*
  1490		 * Multi-stage node selection is used in conjunction with a periodic
  1491		 * migration fault to build a temporal task<->page relation. By using
  1492		 * a two-stage filter we remove short/unlikely relations.
  1493		 *
  1494		 * Using P(p) ~ n_p / n_t as per frequentist probability, we can equate
  1495		 * a task's usage of a particular page (n_p) per total usage of this
  1496		 * page (n_t) (in a given time-span) to a probability.
  1497		 *
  1498		 * Our periodic faults will sample this probability and getting the
  1499		 * same result twice in a row, given these samples are fully
  1500		 * independent, is then given by P(n)^2, provided our sample period
  1501		 * is sufficiently short compared to the usage pattern.
  1502		 *
  1503		 * This quadric squishes small probabilities, making it less likely we
  1504		 * act on an unlikely task<->page relation.
  1505		 */
  1506		if (!cpupid_pid_unset(last_cpupid) &&
  1507					cpupid_to_nid(last_cpupid) != dst_nid)
  1508			return false;
  1509	
  1510		/* Always allow migrate on private faults */
  1511		if (cpupid_match_pid(p, last_cpupid))
  1512			return true;
  1513	
  1514		/* A shared fault, but p->numa_group has not been set up yet. */
  1515		if (!ng)
  1516			return true;
  1517	
  1518		/*
  1519		 * Destination node is much more heavily used than the source
  1520		 * node? Allow migration.
  1521		 */
  1522		if (group_faults_cpu(ng, dst_nid) > group_faults_cpu(ng, src_nid) *
  1523						ACTIVE_NODE_FRACTION)
  1524			return true;
  1525	
  1526		/*
  1527		 * Distribute memory according to CPU & memory use on each node,
  1528		 * with 3/4 hysteresis to avoid unnecessary memory migrations:
  1529		 *
  1530		 * faults_cpu(dst)   3   faults_cpu(src)
  1531		 * --------------- * - > ---------------
  1532		 * faults_mem(dst)   4   faults_mem(src)
  1533		 */
  1534		return group_faults_cpu(ng, dst_nid) * group_faults(p, src_nid) * 3 >
  1535		       group_faults_cpu(ng, src_nid) * group_faults(p, dst_nid) * 4;
  1536	}
  1537	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 46456 bytes --]

  parent reply	other threads:[~2020-02-20  4:51 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-18  8:26 [RFC -V2 0/8] autonuma: Optimize memory placement in memory tiering system Huang, Ying
2020-02-18  8:26 ` [RFC -V2 1/8] autonuma: Add NUMA_BALANCING_MEMORY_TIERING mode Huang, Ying
2020-02-18  8:26 ` [RFC -V2 2/8] autonuma, memory tiering: Rate limit NUMA migration throughput Huang, Ying
2020-02-18  8:57   ` Mel Gorman
2020-02-19  6:01     ` Huang, Ying
2020-02-20  4:51   ` kbuild test robot [this message]
2020-02-18  8:26 ` [RFC -V2 3/8] autonuma, memory tiering: Use kswapd to demote cold pages to PMEM Huang, Ying
2020-02-18  9:09   ` Mel Gorman
2020-02-19  6:05     ` Huang, Ying
2020-02-18  8:26 ` [RFC -V2 4/8] autonuma, memory tiering: Skip to scan fastest memory Huang, Ying
2020-02-18  8:26 ` [RFC -V2 5/8] autonuma, memory tiering: Only promote page if accessed twice Huang, Ying
2020-02-18  8:26 ` [RFC -V2 6/8] autonuma, memory tiering: Select hotter pages to promote to fast memory node Huang, Ying
2020-02-18  8:26 ` [RFC -V2 7/8] autonuma, memory tiering: Double hot threshold for write hint page fault Huang, Ying
2020-02-18  8:26 ` [RFC -V2 8/8] autonuma, memory tiering: Adjust hot threshold automatically 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=202002201253.2FVrppWH%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /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.