Blame view
kernel/time/Kconfig
6.18 KB
79bf2bb33 [PATCH] tick-mana... |
1 2 3 |
# # Timer subsystem related configuration options # |
3872c48b1 tick: Document TI... |
4 |
|
b5e498ad6 timers: Provide g... |
5 6 7 8 9 10 11 12 13 |
# Options selectable by arch Kconfig # Watchdog function for clocksources to detect instabilities config CLOCKSOURCE_WATCHDOG bool # Architecture has extra clocksource data config ARCH_CLOCKSOURCE_DATA bool |
09ec54429 clocksource: Move... |
14 15 16 17 |
# Clocksources require validation of the clocksource against the last # cycle update - x86/TSC misfeature config CLOCKSOURCE_VALIDATE_LAST_CYCLE bool |
b5e498ad6 timers: Provide g... |
18 |
# Timekeeping vsyscall support |
576094b7f time: Introduce n... |
19 20 21 22 |
config GENERIC_TIME_VSYSCALL bool # Timekeeping vsyscall support |
706394211 time: Convert CON... |
23 |
config GENERIC_TIME_VSYSCALL_OLD |
b5e498ad6 timers: Provide g... |
24 |
bool |
b5e498ad6 timers: Provide g... |
25 26 27 28 29 30 31 |
# Old style timekeeping config ARCH_USES_GETTIMEOFFSET bool # The generic clock events infrastructure config GENERIC_CLOCKEVENTS bool |
12ad10004 clockevents: Add ... |
32 33 34 |
# Architecture can handle broadcast in a driver-agnostic way config ARCH_HAS_TICK_BROADCAST bool |
b5e498ad6 timers: Provide g... |
35 36 37 38 |
# Clockevents broadcasting infrastructure config GENERIC_CLOCKEVENTS_BROADCAST bool depends on GENERIC_CLOCKEVENTS |
764e0da14 timers: Fixup the... |
39 40 41 42 |
# Automatically adjust the min. reprogramming time for # clock event device config GENERIC_CLOCKEVENTS_MIN_ADJUST bool |
b5e498ad6 timers: Provide g... |
43 44 45 |
# Generic update of CMOS clock config GENERIC_CMOS_UPDATE bool |
764e0da14 timers: Fixup the... |
46 47 48 |
if GENERIC_CLOCKEVENTS menu "Timers subsystem" |
3451d0243 nohz: Rename CONF... |
49 |
# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is |
764e0da14 timers: Fixup the... |
50 51 52 53 |
# only related to the tick functionality. Oneshot clockevent devices # are supported independ of this. config TICK_ONESHOT bool |
3451d0243 nohz: Rename CONF... |
54 55 56 57 |
config NO_HZ_COMMON bool depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS select TICK_ONESHOT |
3ca277e41 nohz: Pack nohz K... |
58 59 60 |
choice prompt "Timer tick handling" default NO_HZ_IDLE if NO_HZ |
5b533f4ff nohz: Align perio... |
61 |
config HZ_PERIODIC |
3ca277e41 nohz: Pack nohz K... |
62 63 64 65 66 67 68 |
bool "Periodic timer ticks (constant rate, no dynticks)" help This option keeps the tick running periodically at a constant rate, even when the CPU doesn't need it. config NO_HZ_IDLE bool "Idle dynticks system (tickless idle)" |
764e0da14 timers: Fixup the... |
69 |
depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS |
3451d0243 nohz: Rename CONF... |
70 |
select NO_HZ_COMMON |
764e0da14 timers: Fixup the... |
71 |
help |
3ca277e41 nohz: Pack nohz K... |
72 73 74 75 76 |
This option enables a tickless idle system: timer interrupts will only trigger on an as-needed basis when the system is idle. This is usually interesting for energy saving. Most of the time you want to say Y here. |
764e0da14 timers: Fixup the... |
77 |
|
c5bfece2d nohz: Switch from... |
78 |
config NO_HZ_FULL |
fae30dd66 nohz: Improve a b... |
79 |
bool "Full dynticks system (tickless)" |
3451d0243 nohz: Rename CONF... |
80 |
# NO_HZ_COMMON dependency |
ab71d36dd nohz: Unhide full... |
81 |
depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS |
fae30dd66 nohz: Improve a b... |
82 83 |
# We need at least one periodic CPU for timekeeping depends on SMP |
fae30dd66 nohz: Improve a b... |
84 |
depends on HAVE_CONTEXT_TRACKING |
c58b0df12 nohz: Select VIRT... |
85 |
# VIRT_CPU_ACCOUNTING_GEN dependency |
554b0004d vtime: Add HAVE_V... |
86 |
depends on HAVE_VIRT_CPU_ACCOUNTING_GEN |
3451d0243 nohz: Rename CONF... |
87 |
select NO_HZ_COMMON |
ab71d36dd nohz: Unhide full... |
88 |
select RCU_NOCB_CPU |
c58b0df12 nohz: Select VIRT... |
89 |
select VIRT_CPU_ACCOUNTING_GEN |
76c24fb05 nohz: New APIs to... |
90 |
select IRQ_WORK |
ab71d36dd nohz: Unhide full... |
91 92 |
help Adaptively try to shutdown the tick whenever possible, even when |
a831881be nohz: Basic full ... |
93 94 95 |
the CPU is running tasks. Typically this requires running a single task on the CPU. Chances for running tickless are maximized when the task mostly runs in userspace and has few kernel activity. |
c5bfece2d nohz: Switch from... |
96 |
You need to fill up the nohz_full boot parameter with the |
a831881be nohz: Basic full ... |
97 98 99 100 101 102 103 |
desired range of dynticks CPUs. This is implemented at the expense of some overhead in user <-> kernel transitions: syscalls, exceptions and interrupts. Even when it's dynamically off. Say N. |
3ca277e41 nohz: Pack nohz K... |
104 |
endchoice |
f98823ac7 nohz: New option ... |
105 |
config NO_HZ_FULL_ALL |
f96a34e27 nohz: ensure user... |
106 |
bool "Full dynticks system on all CPUs by default (except CPU 0)" |
f98823ac7 nohz: New option ... |
107 108 109 110 111 112 113 |
depends on NO_HZ_FULL help If the user doesn't pass the nohz_full boot option to define the range of full dynticks CPUs, consider that all CPUs in the system are full dynticks by default. Note the boot CPU will still be kept outside the range to handle the timekeeping duty. |
b44379af1 nohz_full: Add Kc... |
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
config NO_HZ_FULL_SYSIDLE bool "Detect full-system idle state for full dynticks system" depends on NO_HZ_FULL default n help At least one CPU must keep the scheduling-clock tick running for timekeeping purposes whenever there is a non-idle CPU, where "non-idle" also includes dynticks CPUs as long as they are running non-idle tasks. Because the underlying adaptive-tick support cannot distinguish between all CPUs being idle and all CPUs each running a single task in dynticks mode, the underlying support simply ensures that there is always a CPU handling the scheduling-clock tick, whether or not all CPUs are idle. This Kconfig option enables scalable detection of the all-CPUs-idle state, thus allowing the scheduling-clock tick to be disabled when all CPUs are idle. Note that scalable detection of the all-CPUs-idle state means that larger systems will be slower to declare the all-CPUs-idle state. Say Y if you would like to help debug all-CPUs-idle detection. Say N if you are unsure. |
0edd1b178 nohz_full: Add fu... |
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
config NO_HZ_FULL_SYSIDLE_SMALL int "Number of CPUs above which large-system approach is used" depends on NO_HZ_FULL_SYSIDLE range 1 NR_CPUS default 8 help The full-system idle detection mechanism takes a lazy approach on large systems, as is required to attain decent scalability. However, on smaller systems, scalability is not anywhere near as large a concern as is energy efficiency. The sysidle subsystem therefore uses a fast but non-scalable algorithm for small systems and a lazier but scalable algorithm for large systems. This Kconfig parameter defines the number of CPUs in the largest system that will be considered to be "small". The default value will be fine in most cases. Battery-powered systems that (1) enable NO_HZ_FULL_SYSIDLE, (2) have larger numbers of CPUs, and (3) are suffering from battery-lifetime problems due to long sysidle latencies might wish to experiment with larger values for this Kconfig parameter. On the other hand, they might be even better served by disabling NO_HZ_FULL entirely, given that NO_HZ_FULL is intended for HPC and real-time workloads that at present do not tend to be run on battery-powered systems. Take the default if you are unsure. |
0644ca5c7 nohz: Fix old dyn... |
162 163 164 165 166 167 168 |
config NO_HZ bool "Old Idle dynticks config" depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS help This is the old config entry that enables dynticks idle. We keep it around for a little while to enforce backward compatibility with older config files. |
764e0da14 timers: Fixup the... |
169 170 171 172 173 174 175 176 177 178 179 |
config HIGH_RES_TIMERS bool "High Resolution Timer Support" depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS select TICK_ONESHOT help This option enables high resolution timer support. If your hardware is not capable then this option only increases the size of the kernel image. endmenu endif |