summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2019-10-22 13:00:55 +0530
committerViresh Kumar <viresh.kumar@linaro.org>2019-10-22 13:00:55 +0530
commitb650392be656e359823a5eb2542a79574d1bbe2a (patch)
tree12819f280ac7cd9b0870ad0b413a28991f29319d
parent74d8f0315511f2c4058108aa092fc2e512f3abce (diff)
updates
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
-rw-r--r--greybus/.greybus_subsystem.txt.swpbin0 -> 16384 bytes
-rw-r--r--scheduler/.sched_idle.txt.swpbin0 -> 49152 bytes
-rw-r--r--scheduler/sched_idle.html60
-rw-r--r--scheduler/sched_idle.txt49
-rw-r--r--scheduler/scheduling-classes-and-policies.jpgbin0 -> 48050 bytes
-rw-r--r--scheduler/scheduling-classes.pngbin0 -> 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
new file mode 100644
index 0000000..535b363
--- /dev/null
+++ b/greybus/.greybus_subsystem.txt.swp
Binary files differ
diff --git a/scheduler/.sched_idle.txt.swp b/scheduler/.sched_idle.txt.swp
new file mode 100644
index 0000000..64dc8d2
--- /dev/null
+++ b/scheduler/.sched_idle.txt.swp
Binary files differ
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
new file mode 100644
index 0000000..4e50e95
--- /dev/null
+++ b/scheduler/scheduling-classes-and-policies.jpg
Binary files differ
diff --git a/scheduler/scheduling-classes.png b/scheduler/scheduling-classes.png
new file mode 100644
index 0000000..7b84aa5
--- /dev/null
+++ b/scheduler/scheduling-classes.png
Binary files differ
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