Blame view

kernel/time/Kconfig 6.18 KB
79bf2bb33   Thomas Gleixner   [PATCH] tick-mana...
1
2
3
  #
  # Timer subsystem related configuration options
  #
3872c48b1   Thomas Gleixner   tick: Document TI...
4

b5e498ad6   Thomas Gleixner   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   Thomas Gleixner   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   Thomas Gleixner   timers: Provide g...
18
  # Timekeeping vsyscall support
576094b7f   John Stultz   time: Introduce n...
19
20
21
22
  config GENERIC_TIME_VSYSCALL
  	bool
  
  # Timekeeping vsyscall support
706394211   John Stultz   time: Convert CON...
23
  config GENERIC_TIME_VSYSCALL_OLD
b5e498ad6   Thomas Gleixner   timers: Provide g...
24
  	bool
b5e498ad6   Thomas Gleixner   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   Mark Rutland   clockevents: Add ...
32
33
34
  # Architecture can handle broadcast in a driver-agnostic way
  config ARCH_HAS_TICK_BROADCAST
  	bool
b5e498ad6   Thomas Gleixner   timers: Provide g...
35
36
37
38
  # Clockevents broadcasting infrastructure
  config GENERIC_CLOCKEVENTS_BROADCAST
  	bool
  	depends on GENERIC_CLOCKEVENTS
764e0da14   Thomas Gleixner   timers: Fixup the...
39
40
41
42
  # Automatically adjust the min. reprogramming time for
  # clock event device
  config GENERIC_CLOCKEVENTS_MIN_ADJUST
  	bool
b5e498ad6   Thomas Gleixner   timers: Provide g...
43
44
45
  # Generic update of CMOS clock
  config GENERIC_CMOS_UPDATE
  	bool
764e0da14   Thomas Gleixner   timers: Fixup the...
46
47
48
  
  if GENERIC_CLOCKEVENTS
  menu "Timers subsystem"
3451d0243   Frederic Weisbecker   nohz: Rename CONF...
49
  # Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
764e0da14   Thomas Gleixner   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   Frederic Weisbecker   nohz: Rename CONF...
54
55
56
57
  config NO_HZ_COMMON
  	bool
  	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
  	select TICK_ONESHOT
3ca277e41   Frederic Weisbecker   nohz: Pack nohz K...
58
59
60
  choice
  	prompt "Timer tick handling"
  	default NO_HZ_IDLE if NO_HZ
5b533f4ff   Frederic Weisbecker   nohz: Align perio...
61
  config HZ_PERIODIC
3ca277e41   Frederic Weisbecker   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   Thomas Gleixner   timers: Fixup the...
69
  	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
3451d0243   Frederic Weisbecker   nohz: Rename CONF...
70
  	select NO_HZ_COMMON
764e0da14   Thomas Gleixner   timers: Fixup the...
71
  	help
3ca277e41   Frederic Weisbecker   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   Thomas Gleixner   timers: Fixup the...
77

c5bfece2d   Frederic Weisbecker   nohz: Switch from...
78
  config NO_HZ_FULL
fae30dd66   Frederic Weisbecker   nohz: Improve a b...
79
  	bool "Full dynticks system (tickless)"
3451d0243   Frederic Weisbecker   nohz: Rename CONF...
80
  	# NO_HZ_COMMON dependency
ab71d36dd   Frederic Weisbecker   nohz: Unhide full...
81
  	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
fae30dd66   Frederic Weisbecker   nohz: Improve a b...
82
83
  	# We need at least one periodic CPU for timekeeping
  	depends on SMP
fae30dd66   Frederic Weisbecker   nohz: Improve a b...
84
  	depends on HAVE_CONTEXT_TRACKING
c58b0df12   Frederic Weisbecker   nohz: Select VIRT...
85
  	# VIRT_CPU_ACCOUNTING_GEN dependency
554b0004d   Kevin Hilman   vtime: Add HAVE_V...
86
  	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
3451d0243   Frederic Weisbecker   nohz: Rename CONF...
87
  	select NO_HZ_COMMON
ab71d36dd   Frederic Weisbecker   nohz: Unhide full...
88
  	select RCU_NOCB_CPU
c58b0df12   Frederic Weisbecker   nohz: Select VIRT...
89
  	select VIRT_CPU_ACCOUNTING_GEN
76c24fb05   Frederic Weisbecker   nohz: New APIs to...
90
  	select IRQ_WORK
ab71d36dd   Frederic Weisbecker   nohz: Unhide full...
91
92
  	help
  	 Adaptively try to shutdown the tick whenever possible, even when
a831881be   Frederic Weisbecker   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   Frederic Weisbecker   nohz: Switch from...
96
  	 You need to fill up the nohz_full boot parameter with the
a831881be   Frederic Weisbecker   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   Frederic Weisbecker   nohz: Pack nohz K...
104
  endchoice
f98823ac7   Frederic Weisbecker   nohz: New option ...
105
  config NO_HZ_FULL_ALL
f96a34e27   Paul Gortmaker   nohz: ensure user...
106
         bool "Full dynticks system on all CPUs by default (except CPU 0)"
f98823ac7   Frederic Weisbecker   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   Paul E. McKenney   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   Paul E. McKenney   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   Frederic Weisbecker   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   Thomas Gleixner   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