ANDROID: mmc: core: move to a SCHED_FIFO thread
authorTim Murray <timmurray@google.com>
Wed, 20 Jan 2016 00:36:40 +0000 (16:36 -0800)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 18 Dec 2017 15:41:22 +0000 (21:11 +0530)
(cherry picked from commit 011e507b413393eab8279dac8b778ad9b6e9971b)

Running mmcqd as a prio 120 thread forces it to compete with standard
user processes for IO performance, especially when the system is under
severe CPU load. Move it to a SCHED_FIFO thread to reduce the impact of
load on IO performance.

Signed-off-by: Tim Murray <timmurray@google.com>
Bug: 25392275
Change-Id: I1edfe73baa25e181367c30c1f40fee886e92b60d

[AmitP: Include <uapi/linux/sched/types.h> for struct sched_param]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
drivers/mmc/core/queue.c

index 0a4e77a5ba33fe7e0009ab1f7f97078a38e1559c..8c4721f1b4bc246f315f214e7add275c4303dc40 100644 (file)
@@ -17,6 +17,8 @@
 
 #include <linux/mmc/card.h>
 #include <linux/mmc/host.h>
+#include <linux/sched/rt.h>
+#include <uapi/linux/sched/types.h>
 
 #include "queue.h"
 #include "block.h"
@@ -43,6 +45,11 @@ static int mmc_queue_thread(void *d)
        struct mmc_queue *mq = d;
        struct request_queue *q = mq->queue;
        struct mmc_context_info *cntx = &mq->card->host->context_info;
+       struct sched_param scheduler_params = {0};
+
+       scheduler_params.sched_priority = 1;
+
+       sched_setscheduler(current, SCHED_FIFO, &scheduler_params);
 
        current->flags |= PF_MEMALLOC;