Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F165169610
D47026.id144537.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D47026.id144537.diff
View Options
Index: website/content/en/status/report-2024-07-2024-09/sched_prio-256_queue_runqueue.adoc
===================================================================
--- /dev/null
+++ website/content/en/status/report-2024-07-2024-09/sched_prio-256_queue_runqueue.adoc
@@ -0,0 +1,58 @@
+=== Scheduling Priorities: 256-queue Runqueues Sub-Project
+
+Contact: Olivier Certner <olce.freebsd.statusreports@certner.fr>
+
+The goal of the 256-queue runqueues sub-project is to fix FreeBSD's POSIX
+compliance in that different priority levels in the `SCHED_FIFO` or `SCHED_RR`
+scheduling classes must lead to immediate preemption by threads having higher
+priority.
+It is part of the bigger scheduling priorities revamp project aiming at
+rationalizing FreeBSD scheduling interfaces, including having consistent
+man:rtprio[2] and POSIX interface behaviors (where it makes sense), enhancing
+POSIX compliance, removing duplicate code and fixing existing bugs, and
+enhancing the non-standard parts both for better control and security.
+Expected benefits are increased usage of FreeBSD as a soft real-time platform,
+e.g., for video and audio processing in casual desktop uses to professional
+settings.
+Readers interested in this topic are invited to consult
+link:https://papers.freebsd.org/2024/asiabsdcon/certner-Scheduling_priorities_in_FreeBSD.files/AsiaBSDCon2024-Certner-Scheduling_priorities_in_FreeBSD-Article.pdf[AsiaBSDCon 2024's paper]
+and link:https://papers.freebsd.org/2024/eurobsdcon/certner-Scheduling_Priorities_and_FreeBSD.files/EuroBSDCon2024-Certner-Scheduling_Priorities_and_FreeBSD.pdf[EuroBSDCon 2024's slides]
+for a wider view, and to contact me for questions, feedbacks or discussions.
+
+Currently, priority levels specified either through the `prio` field of `struct
+rtprio` (man:rtprio[2] interface) or the `sched_priority` one of `struct
+sched_param`, for real-time scheduling classes (`RTP_PRIO_FIFO` and
+`RTP_PRIO_REALTIME` for the former, `SCHED_FIFO` and `SCHED_RR` for the latter)
+as well as idle-time ones (`RTP_PRIO_IDLE`), are conflated as follows: Each
+priority level that has the same quotient when divided by 4 is internally
+treated the same.
+In particular, threads being in the same such equivalence class but having
+higher priority will not preempt other threads in the same class, violating
+POSIX expectations for `SCHED_FIFO` and `SCHED_RR`.
+
+To remedy this situation, we have chosen an impacting internal change on the
+number of queues per runqueue, and defer to the above-mentioned EuroBSDCon
+2024's slides for more details.
+
+The switch to 256-queue runqueues having non-trivial impacts on the ULE
+scheduler, we have been analyzing it and tuning the scheduler to preserve its
+previous behavior with respect to anti-starvation and the effect of nice values.
+With the goal to perform further testing, we have revived Jeff Roberson's
+initial ULE's test tool, called `late` (currently available on
+link:https://github.com/OlCe2/late[GitHub]).
+
+All the modifications made as part of this sub-project are currently under
+review, starting with Phabricator's
+link:https://reviews.freebsd.org/D45387[review D45387] (click on the "Stack" tab
+to see the full series of reviews).
+
+In the course of this project, we have noticed that the effect of nice values is
+especially weak, and consequently have produced experimental patches to make
+their effect stronger.
+However, it is not clear at this point whether we can increase their effect
+satisfactorily enough in the current ULE setting.
+
+We have also started another scheduler project about adapting ULE to hybrid
+architectures, which might also trigger more drastic scheduler changes.
+
+Sponsor: The FreeBSD Foundation
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Aug 7, 1:11 PM (10 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36174844
Default Alt Text
D47026.id144537.diff (3 KB)
Attached To
Mode
D47026: status: 2024Q3: Scheduling Priorities: 256-queue Runqueues Sub-Project
Attached
Detach File
Event Timeline
Log In to Comment