[PATCH OLK-6.6] sched: fair: Use rq_clock_task to account rq->idle_avg

hulk inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/ICB7K1 -------------------------------- A cpu with high irq, will trigger ksoftirqd and newidle balance frequently. Under this case, loadbalance is performed with irq disabled, it increase interrupt latency affects network packet transmission. Signed-off-by: Zhang Qiao <zhangqiao22@huawei.com> --- kernel/sched/core.c | 7 ++++++- kernel/sched/fair.c | 5 ++++- kernel/sched/features.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 4b6188abe01f..7819088ae359 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3815,7 +3815,12 @@ ttwu_do_activate(struct rq *rq, struct task_struct *p, int wake_flags, } if (rq->idle_stamp) { - u64 delta = rq_clock(rq) - rq->idle_stamp; + u64 delta; + + if (sched_feat(IRQ_AVG)) + delta = rq_clock_task(rq) - rq->idle_stamp; + else + delta = rq_clock(rq) - rq->idle_stamp; u64 max = 2*rq->max_idle_balance_cost; update_avg(&rq->avg_idle, delta); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index d3f8e6ce7e6b..292cff7f6296 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5219,7 +5219,10 @@ static inline void update_misfit_status(struct task_struct *p, struct rq *rq) static inline void rq_idle_stamp_update(struct rq *rq) { - rq->idle_stamp = rq_clock(rq); + if (sched_feat(IRQ_AVG)) + rq->idle_stamp = rq_clock_task(rq); + else + rq->idle_stamp = rq_clock(rq); } static inline void rq_idle_stamp_clear(struct rq *rq) diff --git a/kernel/sched/features.h b/kernel/sched/features.h index 02577ddf10bd..ea7ba74810e3 100644 --- a/kernel/sched/features.h +++ b/kernel/sched/features.h @@ -98,6 +98,7 @@ SCHED_FEAT(UTIL_EST_FASTUP, true) SCHED_FEAT(LATENCY_WARN, false) SCHED_FEAT(HZ_BW, true) +SCHED_FEAT(IRQ_AVG, false) #ifdef CONFIG_QOS_SCHED_DYNAMIC_AFFINITY /* -- 2.18.0.huawei.25

反馈: 您发送到kernel@openeuler.org的补丁/补丁集,已成功转换为PR! PR链接地址: https://gitee.com/openeuler/kernel/pulls/16536 邮件列表地址:https://mailweb.openeuler.org/archives/list/kernel@openeuler.org/message/UZY... FeedBack: The patch(es) which you have sent to kernel@openeuler.org mailing list has been converted to a pull request successfully! Pull request link: https://gitee.com/openeuler/kernel/pulls/16536 Mailing list address: https://mailweb.openeuler.org/archives/list/kernel@openeuler.org/message/UZY...
participants (2)
-
patchwork bot
-
Zhang Qiao