Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp3666641pxb; Mon, 9 Nov 2020 18:14:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJweR5XehGQUtl8sZt4ilMyee969T6N/au4dwIxCXS0+fK8ihBuT3sF3Z6Ur1bs7N7N7UDtl X-Received: by 2002:a17:906:7746:: with SMTP id o6mr9165566ejn.457.1604974459395; Mon, 09 Nov 2020 18:14:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604974459; cv=none; d=google.com; s=arc-20160816; b=hli0rC3sMaq4P/Q0wjqkEwvjW5qumyFf2G/pkkDpDZqs2ZRqrkqsrpyPvcUulICqAv +NJh+Xn3BQxqxsmPsU6cMv2oo6VUe4FSxaXTXeA9bIdbBfNYaYuW0ZCtfAqf7u1QJ+5J sLP2Aen1qGPi1WuMzJyHHgsXf2Q224EPdB3WgDG5lsIBXMyPZsoBvrafBI5Vc0NpeIhT HN5q1dF6MBoc3/376u9lRbeVCF5lHF2hkmLFOv4nHrA9GkbtH098dG07pXB9/ZjFtGIW LJB0h+gTGEMYZqw9Zx8OxWJlKIkvdFNg0Gn8Nu0pGdZZ4jF48Q4wrDL3sJ4XUO7jePX1 vY6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=vNlPk2XdLX+Ci3JiWk1pjck1yGLQu3YbJQAfiVKnjJQ=; b=dfknBHHAf6y7L7ajtrf0xjY77pxQu8oVFBssAG6sLJNEH3C0SHB01NTKPf580hn/4a pPGV7ohtNtwHgk6VX324A/UYBjGu1HVCu9RJGWatAPHXxQaTa6nMXSNQGKK3M0b8FFOS DkANGg6uvlF80gG5pThx+MDud6veZBlSNoQkuh+sWrrtBzSkYb5pOjsXSiZwjimF2GYi 5IBcmxXt58moDhks5d0hErCjzbEOqAvM5D8gSU9J8fqJrZS2QOwYgDdWyI7TqKieHkJv a2GON6DxPGRpO9jovWAbF8xGJBooIU5xPXolsih+oWCsvU0nPBP3eyDnLbB1yMCYk1lf pT1w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o5si6011986ejm.525.2020.11.09.18.13.55; Mon, 09 Nov 2020 18:14:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729706AbgKJCMa (ORCPT + 99 others); Mon, 9 Nov 2020 21:12:30 -0500 Received: from out30-56.freemail.mail.aliyun.com ([115.124.30.56]:54457 "EHLO out30-56.freemail.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727311AbgKJCMa (ORCPT ); Mon, 9 Nov 2020 21:12:30 -0500 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R151e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04426;MF=rocking@linux.alibaba.com;NM=1;PH=DS;RN=9;SR=0;TI=SMTPD_---0UEpi23S_1604974339; Received: from localhost(mailfrom:rocking@linux.alibaba.com fp:SMTPD_---0UEpi23S_1604974339) by smtp.aliyun-inc.com(127.0.0.1); Tue, 10 Nov 2020 10:12:28 +0800 From: Peng Wang To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, bristot@redhat.com Cc: linux-kernel@vger.kernel.org Subject: [PATCH] sched/fair: Reorder throttle_cfs_rq() path Date: Tue, 10 Nov 2020 10:11:59 +0800 Message-Id: X-Mailer: git-send-email 2.9.5 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As commit 39f23ce07b93 ("sched/fair: Fix unthrottle_cfs_rq() for leaf_cfs_rq list") does in unthrottle_cfs_rq(), throttle_cfs_rq() can also use the same pattern as dequeue_task_fair(). There is no functional changes. Signed-off-by: Peng Wang --- kernel/sched/fair.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 290f9e3..27a69af 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4779,25 +4779,37 @@ static bool throttle_cfs_rq(struct cfs_rq *cfs_rq) struct cfs_rq *qcfs_rq = cfs_rq_of(se); /* throttled entity or throttle-on-deactivate */ if (!se->on_rq) - break; + goto done; - if (dequeue) { - dequeue_entity(qcfs_rq, se, DEQUEUE_SLEEP); - } else { - update_load_avg(qcfs_rq, se, 0); - se_update_runnable(se); - } + dequeue_entity(qcfs_rq, se, DEQUEUE_SLEEP); qcfs_rq->h_nr_running -= task_delta; qcfs_rq->idle_h_nr_running -= idle_task_delta; - if (qcfs_rq->load.weight) - dequeue = 0; + if (qcfs_rq->load.weight) { + /* Avoid re-evaluating load for this entity: */ + se = parent_entity(se); + break; + } } - if (!se) - sub_nr_running(rq, task_delta); + for_each_sched_entity(se) { + struct cfs_rq *qcfs_rq = cfs_rq_of(se); + /* throttled entity or throttle-on-deactivate */ + if (!se->on_rq) + goto done; + + update_load_avg(qcfs_rq, se, 0); + se_update_runnable(se); + qcfs_rq->h_nr_running -= task_delta; + qcfs_rq->idle_h_nr_running -= idle_task_delta; + } + + /* At this point se is NULL and we are at root level*/ + sub_nr_running(rq, task_delta); + +done: /* * Note: distribution will already see us throttled via the * throttled-list. rq->lock protects completion. -- 2.9.5