1cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifndef _SCHED_SYSCTL_H 2cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#define _SCHED_SYSCTL_H 3cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 4cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_DETECT_HUNG_TASK 5cd64647f043e3fd3569bcf068f47f030198ff93aLi Zefanextern int sysctl_hung_task_check_count; 6cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_hung_task_panic; 7cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned long sysctl_hung_task_timeout_secs; 8270750dbc18a71b23d660df110e433ff9616a2d4Aaron Tomlinextern int sysctl_hung_task_warnings; 9cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern int proc_dohung_task_timeout_secs(struct ctl_table *table, int write, 10cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams void __user *buffer, 11cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams size_t *lenp, loff_t *ppos); 12cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#else 13cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams/* Avoid need for ifdefs elsewhere in the code */ 14cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsenum { sysctl_hung_task_timeout_secs = 0 }; 15cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif 16cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 17cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams/* 18cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * Default maximum number of active map areas, this limits the number of vmas 19cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * per mm struct. Users can overwrite this number by sysctl but there is a 20cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * problem. 21cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * 22cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * When a program's coredump is generated as ELF format, a section is created 23cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * per a vma. In ELF, the number of sections is represented in unsigned short. 24cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * This means the number of sections should be smaller than 65535 at coredump. 25cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * Because the kernel adds some informative sections to a image of program at 26cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * generating coredump, we need some margin. The number of extra sections is 27cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * 1-3 now and depends on arch. We use "5" as safe margin, here. 283fb1c8dcfcda2f5bfb7d79d8b08bf2f04b1eed8fKirill A. Shutemov * 293fb1c8dcfcda2f5bfb7d79d8b08bf2f04b1eed8fKirill A. Shutemov * ELF extended numbering allows more than 65535 sections, so 16-bit bound is 303fb1c8dcfcda2f5bfb7d79d8b08bf2f04b1eed8fKirill A. Shutemov * not a hard limit any more. Although some userspace tools can be surprised by 313fb1c8dcfcda2f5bfb7d79d8b08bf2f04b1eed8fKirill A. Shutemov * that. 32cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams */ 33cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#define MAPCOUNT_ELF_CORE_MARGIN (5) 34cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN) 35cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 36cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern int sysctl_max_map_count; 37cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 38cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_latency; 39cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_min_granularity; 40cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_wakeup_granularity; 41cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_child_runs_first; 42cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 43cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsenum sched_tunable_scaling { 44cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams SCHED_TUNABLESCALING_NONE, 45cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams SCHED_TUNABLESCALING_LOG, 46cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams SCHED_TUNABLESCALING_LINEAR, 47cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams SCHED_TUNABLESCALING_END, 48cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams}; 49cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern enum sched_tunable_scaling sysctl_sched_tunable_scaling; 50cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 51cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_numa_balancing_scan_delay; 52cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_numa_balancing_scan_period_min; 53cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_numa_balancing_scan_period_max; 54cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_numa_balancing_scan_size; 55cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 56cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_SCHED_DEBUG 57cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_migration_cost; 58cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_nr_migrate; 59cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_time_avg; 60cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_timer_migration; 61cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_shares_window; 62cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 63cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsint sched_proc_update_handler(struct ctl_table *table, int write, 64cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams void __user *buffer, size_t *length, 65cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams loff_t *ppos); 66cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif 67cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_SCHED_DEBUG 68cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsstatic inline unsigned int get_sysctl_timer_migration(void) 69cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams{ 70cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams return sysctl_timer_migration; 71cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams} 72cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#else 73cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsstatic inline unsigned int get_sysctl_timer_migration(void) 74cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams{ 75cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams return 1; 76cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams} 77cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif 78ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams 79ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams/* 80ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams * control realtime throttling: 81ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams * 82ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams * /proc/sys/kernel/sched_rt_period_us 83ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams * /proc/sys/kernel/sched_rt_runtime_us 84ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams */ 85cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_rt_period; 86cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern int sysctl_sched_rt_runtime; 87cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 88cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_CFS_BANDWIDTH 89cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_cfs_bandwidth_slice; 90cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif 91cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 92cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_SCHED_AUTOGROUP 93cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_autogroup_enabled; 94cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif 95cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 96ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williamsextern int sched_rr_timeslice; 97ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams 98ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williamsextern int sched_rr_handler(struct ctl_table *table, int write, 99ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams void __user *buffer, size_t *lenp, 100ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams loff_t *ppos); 101ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams 102ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williamsextern int sched_rt_handler(struct ctl_table *table, int write, 103cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams void __user *buffer, size_t *lenp, 104cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams loff_t *ppos); 105cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams 10654a43d54988a3731d644fdeb7a1d6f46b4ac64c7Andi Kleenextern int sysctl_numa_balancing(struct ctl_table *table, int write, 10754a43d54988a3731d644fdeb7a1d6f46b4ac64c7Andi Kleen void __user *buffer, size_t *lenp, 10854a43d54988a3731d644fdeb7a1d6f46b4ac64c7Andi Kleen loff_t *ppos); 10954a43d54988a3731d644fdeb7a1d6f46b4ac64c7Andi Kleen 110cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif /* _SCHED_SYSCTL_H */ 111