From 74cbd0141633539c65d7b83fb7f60ab5c53e219c Mon Sep 17 00:00:00 2001 From: Sultan Alsawaf Date: Tue, 26 Jan 2021 22:05:53 -0800 Subject: [PATCH] sched/core: Use SCHED_RR in place of SCHED_FIFO for all users Although SCHED_FIFO is a real-time scheduling policy, it can have bad results on system latency, since each SCHED_FIFO task will run to completion before yielding to another task. This can result in visible micro-stalls when a SCHED_FIFO task hogs the CPU for too long. On a system where latency is favored over throughput, using SCHED_RR is a better choice than SCHED_FIFO. Signed-off-by: Sultan Alsawaf Signed-off-by: Oktapra Amtono Signed-off-by: CloudedQuartz --- kernel/sched/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index fb7ced55d..89803b405 100755 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5442,7 +5442,8 @@ static void __setscheduler_params(struct task_struct *p, if (policy == SETPARAM_POLICY) policy = p->policy; - p->policy = policy; + /* Replace SCHED_FIFO with SCHED_RR to reduce latency */ + p->policy = policy == SCHED_FIFO ? SCHED_RR : policy; if (dl_policy(policy)) __setparam_dl(p, attr);