-
CONFIG_SCHED_MULTIQ
¶
Traditional multi-queue ready queue
Type: bool
Help¶
When selected, the scheduler ready queue will be implemented as the classic/textbook array of lists, one per priority (max 32 priorities). This corresponds to the scheduler algorithm used in Zephyr versions prior to 1.12. It incurs only a tiny code size overhead vs. the “dumb” scheduler and runs in O(1) time in almost all circumstances with very low constant factor. But it requires a fairly large RAM budget to store those list heads, and the limited features make it incompatible with features like deadline scheduling that need to sort threads more finely, and SMP affinity which need to traverse the list of threads. Typical applications with small numbers of runnable threads probably want the DUMB scheduler.
Direct dependencies¶
!SCHED_DEADLINE
&& <choice SCHED_ALGORITHM: Scheduler priority queue algorithm>
(Includes any dependencies from if’s and menus.)
Kconfig definition¶
At kernel/Kconfig:228
Included via Kconfig:10
→ Kconfig.zephyr:25
Menu path: (top menu) → General Kernel Options → Scheduler priority queue algorithm
config SCHED_MULTIQ bool prompt "Traditional multi-queue ready queue" if !SCHED_DEADLINE
&& <choice SCHED_ALGORITHM: Scheduler priority queue algorithm> depends on !SCHED_DEADLINE
&& <choice SCHED_ALGORITHM: Scheduler priority queue algorithm> help When selected, the scheduler ready queue will be implemented as the classic/textbook array of lists, one per priority (max 32 priorities). This corresponds to the scheduler algorithm used in Zephyr versions prior to 1.12. It incurs only a tiny code size overhead vs. the "dumb" scheduler and runs in O(1) time in almost all circumstances with very low constant factor. But it requires a fairly large RAM budget to store those list heads, and the limited features make it incompatible with features like deadline scheduling that need to sort threads more finely, and SMP affinity which need to traverse the list of threads. Typical applications with small numbers of runnable threads probably want the DUMB scheduler.
(Definitions include propagated dependencies, including from if’s and menus.)