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 --]
WARNING: multiple messages have this Message-ID (diff)
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 --]
next prev parent reply other threads:[~2020-12-18 9:53 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
-- strict thread matches above, loose matches on Subject: below --
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=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.