diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2019-10-22 13:00:55 +0530 |
---|---|---|
committer | Viresh Kumar <viresh.kumar@linaro.org> | 2019-10-22 13:00:55 +0530 |
commit | b650392be656e359823a5eb2542a79574d1bbe2a (patch) | |
tree | 12819f280ac7cd9b0870ad0b413a28991f29319d | |
parent | 74d8f0315511f2c4058108aa092fc2e512f3abce (diff) |
updates
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
-rw-r--r-- | greybus/.greybus_subsystem.txt.swp | bin | 0 -> 16384 bytes | |||
-rw-r--r-- | scheduler/.sched_idle.txt.swp | bin | 0 -> 49152 bytes | |||
-rw-r--r-- | scheduler/sched_idle.html | 60 | ||||
-rw-r--r-- | scheduler/sched_idle.txt | 49 | ||||
-rw-r--r-- | scheduler/scheduling-classes-and-policies.jpg | bin | 0 -> 48050 bytes | |||
-rw-r--r-- | scheduler/scheduling-classes.png | bin | 0 -> 13043 bytes | |||
-rw-r--r-- | scheduler/schedutil_remote_wakeup.html (renamed from schedutil/schedutil_remote_wakeup.html) | 0 | ||||
-rw-r--r-- | scheduler/schedutil_remote_wakeup.txt (renamed from schedutil/schedutil_remote_wakeup.txt) | 0 |
8 files changed, 109 insertions, 0 deletions
diff --git a/greybus/.greybus_subsystem.txt.swp b/greybus/.greybus_subsystem.txt.swp Binary files differnew file mode 100644 index 0000000..535b363 --- /dev/null +++ b/greybus/.greybus_subsystem.txt.swp diff --git a/scheduler/.sched_idle.txt.swp b/scheduler/.sched_idle.txt.swp Binary files differnew file mode 100644 index 0000000..64dc8d2 --- /dev/null +++ b/scheduler/.sched_idle.txt.swp diff --git a/scheduler/sched_idle.html b/scheduler/sched_idle.html new file mode 100644 index 0000000..55e17d0 --- /dev/null +++ b/scheduler/sched_idle.html @@ -0,0 +1,60 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="generator" content="AsciiDoc 8.6.9">
+<title>Reducing scheduling latency with SCHED_IDLE policy</title>
+</head>
+<body>
+<h1>Reducing scheduling latency with SCHED_IDLE policy</h1>
+<p>
+</p>
+<a name="preamble"></a>
+<p>The Linux kernel scheduler (or task scheduler) is a complicated beast and a lot
+of effort goes into improving it during every kernel release cycle. The 5.4
+kernel release will enable users to improve scheduling latency of their
+high-priority tasks by using SCHED_IDLE scheduling policy for the low priority
+tasks.</p>
+<p>The scheduler consists of many scheduling classes, an extensible hierarchy of
+scheduling modules and each class may further encapsulate scheduling policies
+which are handled by the scheduler core in a policy independent way.</p>
+<p>The scheduling classes and policies managed by the Linux kernel scheduler are:</p>
+<table border="0" bgcolor="#e8e8e8" width="100%" cellpadding="4"><tr><td>
+<pre><code>- Stop
+ - No policy
+- Deadline
+ - SCHED_DEADLINE
+- Real-time (RT)
+ - SCHED_FIFO
+ - SCHED_RR
+- Completely fair scheduler (CFS)
+ - SCHED_NORMAL
+ - SCHED_BATCH
+ - SCHED_IDLE
+- Idle
+ - No policy</code></pre>
+</td></tr></table>
+<p>The scheduling classes are mentioned here in decreasing order of their
+priorities; stop class has the highest priority and idle class has the lowest.
+The stop and idle scheduling classes are special.</p>
+<table border="0" bgcolor="#e8e8e8" width="100%" cellpadding="4"><tr><td>
+<pre><code>struct sched_class {
+ const struct sched_class *next;
+ void (*enqueue_task) (struct rq *rq, struct task_struct *p, int flags);
+ void (*dequeue_task) (struct rq *rq, struct task_struct *p, int flags);
+ struct task_struct * (*pick_next_task) (struct rq *rq, struct task_struct *prev, struct rq_flags *rf);
+ …
+};</code></pre>
+</td></tr></table>
+<div>
+<img src="./scheduling-classes.png" style="border-width: 0;" alt="./scheduling-classes.png" width="800">
+<p><b>Figure 1. </b>Scheduling classes</p>
+</div>
+<p></p>
+<p></p>
+<hr><p><small>
+Last updated
+ 2019-10-22 08:30:12 IST
+</small></p>
+</body>
+</html>
diff --git a/scheduler/sched_idle.txt b/scheduler/sched_idle.txt new file mode 100644 index 0000000..969eab4 --- /dev/null +++ b/scheduler/sched_idle.txt @@ -0,0 +1,49 @@ +Reducing scheduling latency with SCHED_IDLE policy +================================================== + +The Linux kernel scheduler (or task scheduler) is a complicated beast and a lot +of effort goes into improving it during every kernel release cycle. The 5.4 +kernel release will enable users to improve scheduling latency of their +high-priority tasks by using SCHED_IDLE scheduling policy for the low priority +tasks. + +The scheduler consists of many scheduling classes, an extensible hierarchy of +scheduling modules and each class may further encapsulate scheduling policies +which are handled by the scheduler core in a policy independent way. + +The scheduling classes are represented by the *struct sched_class*, + +---- +struct sched_class { + const struct sched_class *next; + void (*enqueue_task) (struct rq *rq, struct task_struct *p, int flags); + void (*dequeue_task) (struct rq *rq, struct task_struct *p, int flags); + struct task_struct * (*pick_next_task) (struct rq *rq, struct task_struct *prev, struct rq_flags *rf); + ... +}; +---- + +image::./scheduling-classes.png[title="Scheduling classes",width=800] +The scheduling classes and policies managed by the Linux kernel scheduler are: + +---- +- Stop + - No policy +- Deadline + - SCHED_DEADLINE +- Real-time (RT) + - SCHED_FIFO + - SCHED_RR +- Completely fair scheduler (CFS) + - SCHED_NORMAL + - SCHED_BATCH + - SCHED_IDLE +- Idle + - No policy +---- + + +The scheduling classes are mentioned here in decreasing order of their +priorities; stop class has the highest priority and idle class has the lowest. +The stop and idle scheduling classes are special. + diff --git a/scheduler/scheduling-classes-and-policies.jpg b/scheduler/scheduling-classes-and-policies.jpg Binary files differnew file mode 100644 index 0000000..4e50e95 --- /dev/null +++ b/scheduler/scheduling-classes-and-policies.jpg diff --git a/scheduler/scheduling-classes.png b/scheduler/scheduling-classes.png Binary files differnew file mode 100644 index 0000000..7b84aa5 --- /dev/null +++ b/scheduler/scheduling-classes.png diff --git a/schedutil/schedutil_remote_wakeup.html b/scheduler/schedutil_remote_wakeup.html index da89277..da89277 100644 --- a/schedutil/schedutil_remote_wakeup.html +++ b/scheduler/schedutil_remote_wakeup.html diff --git a/schedutil/schedutil_remote_wakeup.txt b/scheduler/schedutil_remote_wakeup.txt index 0b44f61..0b44f61 100644 --- a/schedutil/schedutil_remote_wakeup.txt +++ b/scheduler/schedutil_remote_wakeup.txt |