On Thu, 5 Nov 2020 at 12:22, Xuewen Yan <[email protected]> wrote: > > According to the original code logic: > cfs_rq->avg.util_avg > sa->util_avg = -------------------- * se->load.weight > cfs_rq->avg.load_avg
this should have been scale_load_down(se->load.weight) from the beginning > but for fair_sched_class: > se->load.weight = 1024 * sched_prio_to_weight[prio]; This is only true for 64bits platform otherwise scale_load and scale_load_down are nop > cfs_rq->avg.util_avg > so the -------------------- must be extremely small, the > cfs_rq->avg.load_avg > judgment condition "sa->util_avg < cap" could be established. > It's not fair for those tasks who has smaller nice value. > > Signed-off-by: Xuewen Yan <[email protected]> > --- > kernel/sched/fair.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 290f9e3..079760b 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -794,7 +794,11 @@ void post_init_entity_util_avg(struct task_struct *p) > > if (cap > 0) { > if (cfs_rq->avg.util_avg != 0) { We should now use cpu_util() instead of cfs_rq->avg.util_avg which takes into account other classes > - sa->util_avg = cfs_rq->avg.util_avg * > se->load.weight; > + if (p->sched_class == &fair_sched_class) > + sa->util_avg = cfs_rq->avg.util_avg * > se_weight(se); > + else > + sa->util_avg = cfs_rq->avg.util_avg * > se->load.weight; Why this else keeps using se->load.weight ? Either we uses sa->util_avg = cfs_rq->avg.util_avg * se_weight(se); for all classes Or we want a different init value for other classes. But in this case se->load.weight is meaningless and we should simply set them to 0 although we could probably compute a value based on bandwidth for deadline class > + > sa->util_avg /= (cfs_rq->avg.load_avg + 1); > > if (sa->util_avg > cap) > -- > 1.9.1 > > ________________________________ > This email (including its attachments) is intended only for the person or > entity to which it is addressed and may contain information that is > privileged, confidential or otherwise protected from disclosure. Unauthorized > use, dissemination, distribution or copying of this email or the information > herein or taking any action in reliance on the contents of this email or the > information herein, by anyone other than the intended recipient, or an > employee or agent responsible for delivering the message to the intended > recipient, is strictly prohibited. If you are not the intended recipient, > please do not read, copy, use or disclose any part of this e-mail to others. > Please notify the sender immediately and permanently delete this e-mail and > any attachments if you received it in error. Internet communications cannot > be guaranteed to be timely, secure, error-free or virus-free. The sender does > not accept liability for any errors or omissions. > 本邮件及其附件具有保密性质,受法律保护不得泄露,仅发送给本邮件所指特定收件人。严禁非经授权使用、宣传、发布或复制本邮件或其内容。若非该特定收件人,请勿阅读、复制、 > > 使用或披露本邮件的任何内容。若误收本邮件,请从系统中永久性删除本邮件及所有附件,并以回复邮件的方式即刻告知发件人。无法保证互联网通信及时、安全、无误或防毒。发件人对任何错漏均不承担责任。

