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 --]
next prev 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.