mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
sched: Add commadline option for RT_GROUP_SCHED toggling
Only simple implementation with a static key wrapper, it will be wired in later. Signed-off-by: Michal Koutný <mkoutny@suse.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20250310170442.504716-5-mkoutny@suse.com
This commit is contained in:
parent
a5a25b32c0
commit
e34e0131fe
@ -6280,6 +6280,11 @@
|
|||||||
Memory area to be used by remote processor image,
|
Memory area to be used by remote processor image,
|
||||||
managed by CMA.
|
managed by CMA.
|
||||||
|
|
||||||
|
rt_group_sched= [KNL] Enable or disable SCHED_RR/FIFO group scheduling
|
||||||
|
when CONFIG_RT_GROUP_SCHED=y. Defaults to
|
||||||
|
!CONFIG_RT_GROUP_SCHED_DEFAULT_DISABLED.
|
||||||
|
Format: <bool>
|
||||||
|
|
||||||
rw [KNL] Mount root device read-write on boot
|
rw [KNL] Mount root device read-write on boot
|
||||||
|
|
||||||
S [KNL] Run init in single mode
|
S [KNL] Run init in single mode
|
||||||
|
11
init/Kconfig
11
init/Kconfig
@ -1082,6 +1082,17 @@ config RT_GROUP_SCHED
|
|||||||
realtime bandwidth for them.
|
realtime bandwidth for them.
|
||||||
See Documentation/scheduler/sched-rt-group.rst for more information.
|
See Documentation/scheduler/sched-rt-group.rst for more information.
|
||||||
|
|
||||||
|
config RT_GROUP_SCHED_DEFAULT_DISABLED
|
||||||
|
bool "Require boot parameter to enable group scheduling for SCHED_RR/FIFO"
|
||||||
|
depends on RT_GROUP_SCHED
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
When set, the RT group scheduling is disabled by default. The option
|
||||||
|
is in inverted form so that mere RT_GROUP_SCHED enables the group
|
||||||
|
scheduling.
|
||||||
|
|
||||||
|
Say N if unsure.
|
||||||
|
|
||||||
config EXT_GROUP_SCHED
|
config EXT_GROUP_SCHED
|
||||||
bool
|
bool
|
||||||
depends on SCHED_CLASS_EXT && CGROUP_SCHED
|
depends on SCHED_CLASS_EXT && CGROUP_SCHED
|
||||||
|
@ -9892,6 +9892,31 @@ static struct cftype cpu_legacy_files[] = {
|
|||||||
{ } /* Terminate */
|
{ } /* Terminate */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_RT_GROUP_SCHED
|
||||||
|
# ifdef CONFIG_RT_GROUP_SCHED_DEFAULT_DISABLED
|
||||||
|
DEFINE_STATIC_KEY_FALSE(rt_group_sched);
|
||||||
|
# else
|
||||||
|
DEFINE_STATIC_KEY_TRUE(rt_group_sched);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
static int __init setup_rt_group_sched(char *str)
|
||||||
|
{
|
||||||
|
long val;
|
||||||
|
|
||||||
|
if (kstrtol(str, 0, &val) || val < 0 || val > 1) {
|
||||||
|
pr_warn("Unable to set rt_group_sched\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (val)
|
||||||
|
static_branch_enable(&rt_group_sched);
|
||||||
|
else
|
||||||
|
static_branch_disable(&rt_group_sched);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
__setup("rt_group_sched=", setup_rt_group_sched);
|
||||||
|
#endif /* CONFIG_RT_GROUP_SCHED */
|
||||||
|
|
||||||
static int cpu_extra_stat_show(struct seq_file *sf,
|
static int cpu_extra_stat_show(struct seq_file *sf,
|
||||||
struct cgroup_subsys_state *css)
|
struct cgroup_subsys_state *css)
|
||||||
{
|
{
|
||||||
|
@ -1500,6 +1500,23 @@ static inline bool sched_group_cookie_match(struct rq *rq,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !CONFIG_SCHED_CORE */
|
#endif /* !CONFIG_SCHED_CORE */
|
||||||
|
#ifdef CONFIG_RT_GROUP_SCHED
|
||||||
|
# ifdef CONFIG_RT_GROUP_SCHED_DEFAULT_DISABLED
|
||||||
|
DECLARE_STATIC_KEY_FALSE(rt_group_sched);
|
||||||
|
static inline bool rt_group_sched_enabled(void)
|
||||||
|
{
|
||||||
|
return static_branch_unlikely(&rt_group_sched);
|
||||||
|
}
|
||||||
|
# else
|
||||||
|
DECLARE_STATIC_KEY_TRUE(rt_group_sched);
|
||||||
|
static inline bool rt_group_sched_enabled(void)
|
||||||
|
{
|
||||||
|
return static_branch_likely(&rt_group_sched);
|
||||||
|
}
|
||||||
|
# endif /* CONFIG_RT_GROUP_SCHED_DEFAULT_DISABLED */
|
||||||
|
#else
|
||||||
|
# define rt_group_sched_enabled() false
|
||||||
|
#endif /* CONFIG_RT_GROUP_SCHED */
|
||||||
|
|
||||||
static inline void lockdep_assert_rq_held(struct rq *rq)
|
static inline void lockdep_assert_rq_held(struct rq *rq)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user