blob: 3c31ba88aca59eb04dab769aad927fcfad7057ca [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX_SCHED_SYSCTL_H
3#define _LINUX_SCHED_SYSCTL_H
4
5#include <linux/types.h>
6
7struct ctl_table;
8
9#ifdef CONFIG_DETECT_HUNG_TASK
Olivier Deprez157378f2022-04-04 15:47:50 +020010
11#ifdef CONFIG_SMP
12extern unsigned int sysctl_hung_task_all_cpu_backtrace;
13#else
14#define sysctl_hung_task_all_cpu_backtrace 0
15#endif /* CONFIG_SMP */
16
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000017extern int sysctl_hung_task_check_count;
18extern unsigned int sysctl_hung_task_panic;
19extern unsigned long sysctl_hung_task_timeout_secs;
20extern unsigned long sysctl_hung_task_check_interval_secs;
21extern int sysctl_hung_task_warnings;
Olivier Deprez157378f2022-04-04 15:47:50 +020022int proc_dohung_task_timeout_secs(struct ctl_table *table, int write,
23 void *buffer, size_t *lenp, loff_t *ppos);
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000024#else
25/* Avoid need for ifdefs elsewhere in the code */
26enum { sysctl_hung_task_timeout_secs = 0 };
27#endif
28
29extern unsigned int sysctl_sched_latency;
30extern unsigned int sysctl_sched_min_granularity;
31extern unsigned int sysctl_sched_wakeup_granularity;
32extern unsigned int sysctl_sched_child_runs_first;
33
34enum sched_tunable_scaling {
35 SCHED_TUNABLESCALING_NONE,
36 SCHED_TUNABLESCALING_LOG,
37 SCHED_TUNABLESCALING_LINEAR,
38 SCHED_TUNABLESCALING_END,
39};
40extern enum sched_tunable_scaling sysctl_sched_tunable_scaling;
41
42extern unsigned int sysctl_numa_balancing_scan_delay;
43extern unsigned int sysctl_numa_balancing_scan_period_min;
44extern unsigned int sysctl_numa_balancing_scan_period_max;
45extern unsigned int sysctl_numa_balancing_scan_size;
46
47#ifdef CONFIG_SCHED_DEBUG
48extern __read_mostly unsigned int sysctl_sched_migration_cost;
49extern __read_mostly unsigned int sysctl_sched_nr_migrate;
50
51int sched_proc_update_handler(struct ctl_table *table, int write,
Olivier Deprez157378f2022-04-04 15:47:50 +020052 void *buffer, size_t *length, loff_t *ppos);
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000053#endif
54
55/*
56 * control realtime throttling:
57 *
58 * /proc/sys/kernel/sched_rt_period_us
59 * /proc/sys/kernel/sched_rt_runtime_us
60 */
61extern unsigned int sysctl_sched_rt_period;
62extern int sysctl_sched_rt_runtime;
63
Olivier Deprez157378f2022-04-04 15:47:50 +020064extern unsigned int sysctl_sched_dl_period_max;
65extern unsigned int sysctl_sched_dl_period_min;
66
David Brazdil0f672f62019-12-10 10:32:29 +000067#ifdef CONFIG_UCLAMP_TASK
68extern unsigned int sysctl_sched_uclamp_util_min;
69extern unsigned int sysctl_sched_uclamp_util_max;
Olivier Deprez157378f2022-04-04 15:47:50 +020070extern unsigned int sysctl_sched_uclamp_util_min_rt_default;
David Brazdil0f672f62019-12-10 10:32:29 +000071#endif
72
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000073#ifdef CONFIG_CFS_BANDWIDTH
74extern unsigned int sysctl_sched_cfs_bandwidth_slice;
75#endif
76
77#ifdef CONFIG_SCHED_AUTOGROUP
78extern unsigned int sysctl_sched_autogroup_enabled;
79#endif
80
81extern int sysctl_sched_rr_timeslice;
82extern int sched_rr_timeslice;
83
Olivier Deprez157378f2022-04-04 15:47:50 +020084int sched_rr_handler(struct ctl_table *table, int write, void *buffer,
85 size_t *lenp, loff_t *ppos);
86int sched_rt_handler(struct ctl_table *table, int write, void *buffer,
87 size_t *lenp, loff_t *ppos);
88int sysctl_sched_uclamp_handler(struct ctl_table *table, int write,
89 void *buffer, size_t *lenp, loff_t *ppos);
90int sysctl_numa_balancing(struct ctl_table *table, int write, void *buffer,
91 size_t *lenp, loff_t *ppos);
92int sysctl_schedstats(struct ctl_table *table, int write, void *buffer,
93 size_t *lenp, loff_t *ppos);
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000094
David Brazdil0f672f62019-12-10 10:32:29 +000095#if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL)
96extern unsigned int sysctl_sched_energy_aware;
Olivier Deprez157378f2022-04-04 15:47:50 +020097int sched_energy_aware_handler(struct ctl_table *table, int write,
98 void *buffer, size_t *lenp, loff_t *ppos);
David Brazdil0f672f62019-12-10 10:32:29 +000099#endif
100
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000101#endif /* _LINUX_SCHED_SYSCTL_H */