]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
sched/fair: optimize the PLACE_LAG when se->vlag is zero
authorHuang Shijie <shijie@os.amperecomputing.com>
Tue, 1 Oct 2024 07:00:21 +0000 (15:00 +0800)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 7 Oct 2024 07:28:41 +0000 (09:28 +0200)
When PLACE_LAG is enabled, from the relationship:
            vl_i = (W + w_i)*vl'_i / W
we know that if vl'_i(se->vlag) is zero, the vl_i is zero too.

So if se->vlag is zero, there is no need to waste cycles to
do the calculation.

Signed-off-by: Huang Shijie <shijie@os.amperecomputing.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Christoph Lameter (Ampere) <cl@linux.com>
Link: https://lkml.kernel.org/r/20241001070021.10626-1-shijie@os.amperecomputing.com
kernel/sched/fair.c

index c9e3b8d2a85fecd59ab7fc7ef31d670cd4eedf5b..5a621210c9c1d1818b9f059ee26963cd47b4a11c 100644 (file)
@@ -5280,7 +5280,7 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
         *
         * EEVDF: placement strategy #1 / #2
         */
-       if (sched_feat(PLACE_LAG) && cfs_rq->nr_running) {
+       if (sched_feat(PLACE_LAG) && cfs_rq->nr_running && se->vlag) {
                struct sched_entity *curr = cfs_rq->curr;
                unsigned long load;