From: kernel test robot <lkp@intel.com> To: Huaixin Chang <changhuaixin@linux.alibaba.com>, linux-kernel@vger.kernel.org Cc: kbuild-all@lists.01.org, bsegall@google.com, changhuaixin@linux.alibaba.com, dietmar.eggemann@arm.com, juri.lelli@redhat.com, mgorman@suse.de, mingo@redhat.com, pauld@redhead.com, peterz@infradead.org, pjt@google.com Subject: Re: [PATCH 2/4] sched/fair: Make CFS bandwidth controller burstable Date: Fri, 18 Dec 2020 17:53:16 +0800 [thread overview] Message-ID: <202012181723.Eecfk7mb-lkp@intel.com> (raw) In-Reply-To: <20201217074620.58338-3-changhuaixin@linux.alibaba.com> [-- Attachment #1: Type: text/plain, Size: 5279 bytes --] Hi Huaixin, Thank you for the patch! Yet something to improve: [auto build test ERROR on tip/sched/core] [also build test ERROR on tip/master linus/master v5.10 next-20201217] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Huaixin-Chang/sched-fair-Burstable-CFS-bandwidth-controller/20201217-155214 base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 5b78f2dc315354c05300795064f587366a02c6ff config: i386-randconfig-r013-20200812 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/d2f5cde464c872307ee33f78ba167a6f3334697c git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Huaixin-Chang/sched-fair-Burstable-CFS-bandwidth-controller/20201217-155214 git checkout d2f5cde464c872307ee33f78ba167a6f3334697c # save the attached .config to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): ld: kernel/sched/core.o: in function `tg_set_cfs_bandwidth': >> kernel/sched/core.c:8596: undefined reference to `__udivdi3' vim +8596 kernel/sched/core.c 8521 8522 static int tg_set_cfs_bandwidth(struct task_group *tg, u64 period, u64 quota, 8523 u64 burst) 8524 { 8525 int i, ret = 0, runtime_enabled, runtime_was_enabled; 8526 struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; 8527 u64 buffer, burst_onset; 8528 8529 if (tg == &root_task_group) 8530 return -EINVAL; 8531 8532 /* 8533 * Ensure we have at some amount of bandwidth every period. This is 8534 * to prevent reaching a state of large arrears when throttled via 8535 * entity_tick() resulting in prolonged exit starvation. 8536 */ 8537 if (quota < min_cfs_quota_period || period < min_cfs_quota_period) 8538 return -EINVAL; 8539 8540 /* 8541 * Likewise, bound things on the otherside by preventing insane quota 8542 * periods. This also allows us to normalize in computing quota 8543 * feasibility. 8544 */ 8545 if (period > max_cfs_quota_period) 8546 return -EINVAL; 8547 8548 /* 8549 * Bound quota to defend quota against overflow during bandwidth shift. 8550 */ 8551 if (quota != RUNTIME_INF && quota > max_cfs_runtime) 8552 return -EINVAL; 8553 8554 /* 8555 * Bound burst to defend burst against overflow during bandwidth shift. 8556 */ 8557 if (burst > max_cfs_runtime) 8558 return -EINVAL; 8559 8560 if (quota == RUNTIME_INF) 8561 buffer = RUNTIME_INF; 8562 else 8563 buffer = min(max_cfs_runtime, quota + burst); 8564 /* 8565 * Prevent race between setting of cfs_rq->runtime_enabled and 8566 * unthrottle_offline_cfs_rqs(). 8567 */ 8568 get_online_cpus(); 8569 mutex_lock(&cfs_constraints_mutex); 8570 ret = __cfs_schedulable(tg, period, quota); 8571 if (ret) 8572 goto out_unlock; 8573 8574 runtime_enabled = quota != RUNTIME_INF; 8575 runtime_was_enabled = cfs_b->quota != RUNTIME_INF; 8576 /* 8577 * If we need to toggle cfs_bandwidth_used, off->on must occur 8578 * before making related changes, and on->off must occur afterwards 8579 */ 8580 if (runtime_enabled && !runtime_was_enabled) 8581 cfs_bandwidth_usage_inc(); 8582 raw_spin_lock_irq(&cfs_b->lock); 8583 cfs_b->period = ns_to_ktime(period); 8584 cfs_b->quota = quota; 8585 cfs_b->burst = burst; 8586 cfs_b->buffer = buffer; 8587 8588 cfs_b->max_overrun = DIV_ROUND_UP_ULL(max_cfs_runtime, quota); 8589 cfs_b->runtime = cfs_b->quota; 8590 8591 /* burst_onset needed */ 8592 if (cfs_b->quota != RUNTIME_INF && 8593 sysctl_sched_cfs_bw_burst_enabled && 8594 sysctl_sched_cfs_bw_burst_onset_percent > 0) { 8595 > 8596 burst_onset = burst / 100 * 8597 sysctl_sched_cfs_bw_burst_onset_percent; 8598 8599 cfs_b->runtime += burst_onset; 8600 cfs_b->runtime = min(max_cfs_runtime, cfs_b->runtime); 8601 } 8602 8603 /* Restart the period timer (if active) to handle new period expiry: */ 8604 if (runtime_enabled) 8605 start_cfs_bandwidth(cfs_b, 1); 8606 8607 raw_spin_unlock_irq(&cfs_b->lock); 8608 8609 for_each_online_cpu(i) { 8610 struct cfs_rq *cfs_rq = tg->cfs_rq[i]; 8611 struct rq *rq = cfs_rq->rq; 8612 struct rq_flags rf; 8613 8614 rq_lock_irq(rq, &rf); 8615 cfs_rq->runtime_enabled = runtime_enabled; 8616 cfs_rq->runtime_remaining = 0; 8617 8618 if (cfs_rq->throttled) 8619 unthrottle_cfs_rq(cfs_rq); 8620 rq_unlock_irq(rq, &rf); 8621 } 8622 if (runtime_was_enabled && !runtime_enabled) 8623 cfs_bandwidth_usage_dec(); 8624 out_unlock: 8625 mutex_unlock(&cfs_constraints_mutex); 8626 put_online_cpus(); 8627 8628 return ret; 8629 } 8630 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 34741 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com> To: kbuild-all@lists.01.org Subject: Re: [PATCH 2/4] sched/fair: Make CFS bandwidth controller burstable Date: Fri, 18 Dec 2020 17:53:16 +0800 [thread overview] Message-ID: <202012181723.Eecfk7mb-lkp@intel.com> (raw) In-Reply-To: <20201217074620.58338-3-changhuaixin@linux.alibaba.com> [-- Attachment #1: Type: text/plain, Size: 5428 bytes --] Hi Huaixin, Thank you for the patch! Yet something to improve: [auto build test ERROR on tip/sched/core] [also build test ERROR on tip/master linus/master v5.10 next-20201217] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Huaixin-Chang/sched-fair-Burstable-CFS-bandwidth-controller/20201217-155214 base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 5b78f2dc315354c05300795064f587366a02c6ff config: i386-randconfig-r013-20200812 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/d2f5cde464c872307ee33f78ba167a6f3334697c git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Huaixin-Chang/sched-fair-Burstable-CFS-bandwidth-controller/20201217-155214 git checkout d2f5cde464c872307ee33f78ba167a6f3334697c # save the attached .config to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): ld: kernel/sched/core.o: in function `tg_set_cfs_bandwidth': >> kernel/sched/core.c:8596: undefined reference to `__udivdi3' vim +8596 kernel/sched/core.c 8521 8522 static int tg_set_cfs_bandwidth(struct task_group *tg, u64 period, u64 quota, 8523 u64 burst) 8524 { 8525 int i, ret = 0, runtime_enabled, runtime_was_enabled; 8526 struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; 8527 u64 buffer, burst_onset; 8528 8529 if (tg == &root_task_group) 8530 return -EINVAL; 8531 8532 /* 8533 * Ensure we have at some amount of bandwidth every period. This is 8534 * to prevent reaching a state of large arrears when throttled via 8535 * entity_tick() resulting in prolonged exit starvation. 8536 */ 8537 if (quota < min_cfs_quota_period || period < min_cfs_quota_period) 8538 return -EINVAL; 8539 8540 /* 8541 * Likewise, bound things on the otherside by preventing insane quota 8542 * periods. This also allows us to normalize in computing quota 8543 * feasibility. 8544 */ 8545 if (period > max_cfs_quota_period) 8546 return -EINVAL; 8547 8548 /* 8549 * Bound quota to defend quota against overflow during bandwidth shift. 8550 */ 8551 if (quota != RUNTIME_INF && quota > max_cfs_runtime) 8552 return -EINVAL; 8553 8554 /* 8555 * Bound burst to defend burst against overflow during bandwidth shift. 8556 */ 8557 if (burst > max_cfs_runtime) 8558 return -EINVAL; 8559 8560 if (quota == RUNTIME_INF) 8561 buffer = RUNTIME_INF; 8562 else 8563 buffer = min(max_cfs_runtime, quota + burst); 8564 /* 8565 * Prevent race between setting of cfs_rq->runtime_enabled and 8566 * unthrottle_offline_cfs_rqs(). 8567 */ 8568 get_online_cpus(); 8569 mutex_lock(&cfs_constraints_mutex); 8570 ret = __cfs_schedulable(tg, period, quota); 8571 if (ret) 8572 goto out_unlock; 8573 8574 runtime_enabled = quota != RUNTIME_INF; 8575 runtime_was_enabled = cfs_b->quota != RUNTIME_INF; 8576 /* 8577 * If we need to toggle cfs_bandwidth_used, off->on must occur 8578 * before making related changes, and on->off must occur afterwards 8579 */ 8580 if (runtime_enabled && !runtime_was_enabled) 8581 cfs_bandwidth_usage_inc(); 8582 raw_spin_lock_irq(&cfs_b->lock); 8583 cfs_b->period = ns_to_ktime(period); 8584 cfs_b->quota = quota; 8585 cfs_b->burst = burst; 8586 cfs_b->buffer = buffer; 8587 8588 cfs_b->max_overrun = DIV_ROUND_UP_ULL(max_cfs_runtime, quota); 8589 cfs_b->runtime = cfs_b->quota; 8590 8591 /* burst_onset needed */ 8592 if (cfs_b->quota != RUNTIME_INF && 8593 sysctl_sched_cfs_bw_burst_enabled && 8594 sysctl_sched_cfs_bw_burst_onset_percent > 0) { 8595 > 8596 burst_onset = burst / 100 * 8597 sysctl_sched_cfs_bw_burst_onset_percent; 8598 8599 cfs_b->runtime += burst_onset; 8600 cfs_b->runtime = min(max_cfs_runtime, cfs_b->runtime); 8601 } 8602 8603 /* Restart the period timer (if active) to handle new period expiry: */ 8604 if (runtime_enabled) 8605 start_cfs_bandwidth(cfs_b, 1); 8606 8607 raw_spin_unlock_irq(&cfs_b->lock); 8608 8609 for_each_online_cpu(i) { 8610 struct cfs_rq *cfs_rq = tg->cfs_rq[i]; 8611 struct rq *rq = cfs_rq->rq; 8612 struct rq_flags rf; 8613 8614 rq_lock_irq(rq, &rf); 8615 cfs_rq->runtime_enabled = runtime_enabled; 8616 cfs_rq->runtime_remaining = 0; 8617 8618 if (cfs_rq->throttled) 8619 unthrottle_cfs_rq(cfs_rq); 8620 rq_unlock_irq(rq, &rf); 8621 } 8622 if (runtime_was_enabled && !runtime_enabled) 8623 cfs_bandwidth_usage_dec(); 8624 out_unlock: 8625 mutex_unlock(&cfs_constraints_mutex); 8626 put_online_cpus(); 8627 8628 return ret; 8629 } 8630 --- 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: 34741 bytes --]
next prev parent reply other threads:[~2020-12-18 9:55 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-17 7:46 [PATCH 0/4] sched/fair: Burstable CFS bandwidth controller Huaixin Chang 2020-12-17 7:46 ` [PATCH 1/4] sched/fair: Introduce primitives for CFS bandwidth burst Huaixin Chang 2020-12-17 13:36 ` Peter Zijlstra 2020-12-21 13:53 ` changhuaixin 2021-01-12 9:21 ` changhuaixin 2020-12-17 7:46 ` [PATCH 2/4] sched/fair: Make CFS bandwidth controller burstable Huaixin Chang 2020-12-18 9:53 ` kernel test robot [this message] 2020-12-18 9:53 ` kernel test robot 2020-12-17 7:46 ` [PATCH 3/4] sched/fair: Add cfs bandwidth burst statistics Huaixin Chang 2020-12-17 7:46 ` [PATCH 4/4] sched/fair: Add document for burstable CFS bandwidth control Huaixin Chang 2020-12-17 21:25 ` [PATCH 0/4] sched/fair: Burstable CFS bandwidth controller Benjamin Segall 2021-01-20 12:27 ` [PATCH v2 " Huaixin Chang 2021-01-20 12:27 ` [PATCH 1/4] sched/fair: Introduce primitives for CFS bandwidth burst Huaixin Chang 2021-01-20 12:27 ` [PATCH 2/4] sched/fair: Make CFS bandwidth controller burstable Huaixin Chang 2021-01-20 17:06 ` kernel test robot 2021-01-20 17:06 ` kernel test robot 2021-01-20 18:33 ` kernel test robot 2021-01-20 18:33 ` kernel test robot 2021-01-20 22:01 ` kernel test robot 2021-01-20 22:01 ` kernel test robot 2021-01-20 22:01 ` [RFC PATCH] sched/fair: __refill_cfs_bandwidth_runtime() can be static kernel test robot 2021-01-20 22:01 ` kernel test robot 2021-01-20 12:27 ` [PATCH 3/4] sched/fair: Add cfs bandwidth burst statistics Huaixin Chang 2021-01-20 12:27 ` [PATCH 4/4] sched/fair: Add document for burstable CFS bandwidth control Huaixin Chang 2021-01-20 19:48 ` Randy Dunlap 2021-01-21 11:04 ` [PATCH v3 0/4] sched/fair: Burstable CFS bandwidth controller Huaixin Chang 2021-01-21 11:04 ` [PATCH v3 1/4] sched/fair: Introduce primitives for CFS bandwidth burst Huaixin Chang 2021-03-10 12:39 ` Peter Zijlstra 2021-01-21 11:04 ` [PATCH v3 2/4] sched/fair: Make CFS bandwidth controller burstable Huaixin Chang 2021-03-10 13:04 ` Peter Zijlstra 2021-03-12 13:54 ` changhuaixin 2021-03-16 10:55 ` Peter Zijlstra 2021-01-21 11:04 ` [PATCH v3 3/4] sched/fair: Add cfs bandwidth burst statistics Huaixin Chang 2021-03-10 13:10 ` Peter Zijlstra 2021-01-21 11:04 ` [PATCH v3 4/4] sched/fair: Add document for burstable CFS bandwidth control Huaixin Chang 2021-03-10 13:17 ` Peter Zijlstra 2021-01-26 10:18 ` [PATCH v3 0/4] sched/fair: Burstable CFS bandwidth controller changhuaixin 2021-03-10 12:26 ` Peter Zijlstra 2021-02-09 13:17 ` Odin Ugedal 2021-02-09 10:28 ` Tejun Heo 2021-02-27 13:48 ` changhuaixin 2021-03-10 11:11 ` Odin Ugedal 2021-03-12 13:26 ` changhuaixin 2021-02-02 11:40 [PATCH " Huaixin Chang 2021-02-02 11:40 ` [PATCH 2/4] sched/fair: Make CFS bandwidth controller burstable Huaixin Chang
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=202012181723.Eecfk7mb-lkp@intel.com \ --to=lkp@intel.com \ --cc=bsegall@google.com \ --cc=changhuaixin@linux.alibaba.com \ --cc=dietmar.eggemann@arm.com \ --cc=juri.lelli@redhat.com \ --cc=kbuild-all@lists.01.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mgorman@suse.de \ --cc=mingo@redhat.com \ --cc=pauld@redhead.com \ --cc=peterz@infradead.org \ --cc=pjt@google.com \ /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: linkBe 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.