diff options
Diffstat (limited to 'litmus/Kconfig')
-rw-r--r-- | litmus/Kconfig | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/litmus/Kconfig b/litmus/Kconfig new file mode 100644 index 000000000000..ad8dc8308cf0 --- /dev/null +++ b/litmus/Kconfig | |||
@@ -0,0 +1,185 @@ | |||
1 | menu "LITMUS^RT" | ||
2 | |||
3 | menu "Scheduling" | ||
4 | |||
5 | config PLUGIN_CEDF | ||
6 | bool "Clustered-EDF" | ||
7 | depends on X86 && SYSFS | ||
8 | default y | ||
9 | help | ||
10 | Include the Clustered EDF (C-EDF) plugin in the kernel. | ||
11 | This is appropriate for large platforms with shared caches. | ||
12 | On smaller platforms (e.g., ARM PB11MPCore), using C-EDF | ||
13 | makes little sense since there aren't any shared caches. | ||
14 | |||
15 | config PLUGIN_PFAIR | ||
16 | bool "PFAIR" | ||
17 | depends on HIGH_RES_TIMERS && !NO_HZ | ||
18 | default y | ||
19 | help | ||
20 | Include the PFAIR plugin (i.e., the PD^2 scheduler) in the kernel. | ||
21 | The PFAIR plugin requires high resolution timers (for staggered quanta) | ||
22 | and does not support NO_HZ (quanta could be missed when the system is idle). | ||
23 | |||
24 | If unsure, say Yes. | ||
25 | |||
26 | config RELEASE_MASTER | ||
27 | bool "Release-master Support" | ||
28 | depends on ARCH_HAS_SEND_PULL_TIMERS | ||
29 | default n | ||
30 | help | ||
31 | Allow one processor to act as a dedicated interrupt processor | ||
32 | that services all timer interrupts, but that does not schedule | ||
33 | real-time tasks. See RTSS'09 paper for details | ||
34 | (http://www.cs.unc.edu/~anderson/papers.html). | ||
35 | Currently only supported by GSN-EDF. | ||
36 | |||
37 | endmenu | ||
38 | |||
39 | menu "Real-Time Synchronization" | ||
40 | |||
41 | config NP_SECTION | ||
42 | bool "Non-preemptive section support" | ||
43 | default n | ||
44 | help | ||
45 | Allow tasks to become non-preemptable. | ||
46 | Note that plugins still need to explicitly support non-preemptivity. | ||
47 | Currently, only GSN-EDF and PSN-EDF have such support. | ||
48 | |||
49 | This is required to support locking protocols such as the FMLP. | ||
50 | If disabled, all tasks will be considered preemptable at all times. | ||
51 | |||
52 | config LITMUS_LOCKING | ||
53 | bool "Support for real-time locking protocols" | ||
54 | depends on NP_SECTION | ||
55 | default n | ||
56 | help | ||
57 | Enable LITMUS^RT's deterministic multiprocessor real-time | ||
58 | locking protocols. | ||
59 | |||
60 | Say Yes if you want to include locking protocols such as the FMLP and | ||
61 | Baker's SRP. | ||
62 | |||
63 | endmenu | ||
64 | |||
65 | menu "Tracing" | ||
66 | |||
67 | config FEATHER_TRACE | ||
68 | bool "Feather-Trace Infrastructure" | ||
69 | default y | ||
70 | help | ||
71 | Feather-Trace basic tracing infrastructure. Includes device file | ||
72 | driver and instrumentation point support. | ||
73 | |||
74 | There are actually two implementations of Feather-Trace. | ||
75 | 1) A slower, but portable, default implementation. | ||
76 | 2) Architecture-specific implementations that rewrite kernel .text at runtime. | ||
77 | |||
78 | If enabled, Feather-Trace will be based on 2) if available (currently only for x86). | ||
79 | However, if DEBUG_RODATA=y, then Feather-Trace will choose option 1) in any case | ||
80 | to avoid problems with write-protected .text pages. | ||
81 | |||
82 | Bottom line: to avoid increased overheads, choose DEBUG_RODATA=n. | ||
83 | |||
84 | Note that this option only enables the basic Feather-Trace infrastructure; | ||
85 | you still need to enable SCHED_TASK_TRACE and/or SCHED_OVERHEAD_TRACE to | ||
86 | actually enable any events. | ||
87 | |||
88 | config SCHED_TASK_TRACE | ||
89 | bool "Trace real-time tasks" | ||
90 | depends on FEATHER_TRACE | ||
91 | default y | ||
92 | help | ||
93 | Include support for the sched_trace_XXX() tracing functions. This | ||
94 | allows the collection of real-time task events such as job | ||
95 | completions, job releases, early completions, etc. This results in a | ||
96 | small overhead in the scheduling code. Disable if the overhead is not | ||
97 | acceptable (e.g., benchmarking). | ||
98 | |||
99 | Say Yes for debugging. | ||
100 | Say No for overhead tracing. | ||
101 | |||
102 | config SCHED_TASK_TRACE_SHIFT | ||
103 | int "Buffer size for sched_trace_xxx() events" | ||
104 | depends on SCHED_TASK_TRACE | ||
105 | range 8 13 | ||
106 | default 9 | ||
107 | help | ||
108 | |||
109 | Select the buffer size of sched_trace_xxx() events as a power of two. | ||
110 | These buffers are statically allocated as per-CPU data. Each event | ||
111 | requires 24 bytes storage plus one additional flag byte. Too large | ||
112 | buffers can cause issues with the per-cpu allocator (and waste | ||
113 | memory). Too small buffers can cause scheduling events to be lost. The | ||
114 | "right" size is workload dependent and depends on the number of tasks, | ||
115 | each task's period, each task's number of suspensions, and how often | ||
116 | the buffer is flushed. | ||
117 | |||
118 | Examples: 12 => 4k events | ||
119 | 10 => 1k events | ||
120 | 8 => 512 events | ||
121 | |||
122 | config SCHED_OVERHEAD_TRACE | ||
123 | bool "Record timestamps for overhead measurements" | ||
124 | depends on FEATHER_TRACE | ||
125 | default n | ||
126 | help | ||
127 | Export event stream for overhead tracing. | ||
128 | Say Yes for overhead tracing. | ||
129 | |||
130 | config SCHED_DEBUG_TRACE | ||
131 | bool "TRACE() debugging" | ||
132 | default y | ||
133 | help | ||
134 | Include support for sched_trace_log_messageg(), which is used to | ||
135 | implement TRACE(). If disabled, no TRACE() messages will be included | ||
136 | in the kernel, and no overheads due to debugging statements will be | ||
137 | incurred by the scheduler. Disable if the overhead is not acceptable | ||
138 | (e.g. benchmarking). | ||
139 | |||
140 | Say Yes for debugging. | ||
141 | Say No for overhead tracing. | ||
142 | |||
143 | config SCHED_DEBUG_TRACE_SHIFT | ||
144 | int "Buffer size for TRACE() buffer" | ||
145 | depends on SCHED_DEBUG_TRACE | ||
146 | range 14 22 | ||
147 | default 18 | ||
148 | help | ||
149 | |||
150 | Select the amount of memory needed per for the TRACE() buffer, as a | ||
151 | power of two. The TRACE() buffer is global and statically allocated. If | ||
152 | the buffer is too small, there will be holes in the TRACE() log if the | ||
153 | buffer-flushing task is starved. | ||
154 | |||
155 | The default should be sufficient for most systems. Increase the buffer | ||
156 | size if the log contains holes. Reduce the buffer size when running on | ||
157 | a memory-constrained system. | ||
158 | |||
159 | Examples: 14 => 16KB | ||
160 | 18 => 256KB | ||
161 | 20 => 1MB | ||
162 | |||
163 | This buffer is exported to usespace using a misc device as | ||
164 | 'litmus/log'. On a system with default udev rules, a corresponding | ||
165 | character device node should be created at /dev/litmus/log. The buffer | ||
166 | can be flushed using cat, e.g., 'cat /dev/litmus/log > my_log_file.txt'. | ||
167 | |||
168 | config SCHED_DEBUG_TRACE_CALLER | ||
169 | bool "Include [function@file:line] tag in TRACE() log" | ||
170 | depends on SCHED_DEBUG_TRACE | ||
171 | default n | ||
172 | help | ||
173 | With this option enabled, TRACE() prepends | ||
174 | |||
175 | "[<function name>@<filename>:<line number>]" | ||
176 | |||
177 | to each message in the debug log. Enable this to aid in figuring out | ||
178 | what was called in which order. The downside is that it adds a lot of | ||
179 | clutter. | ||
180 | |||
181 | If unsure, say No. | ||
182 | |||
183 | endmenu | ||
184 | |||
185 | endmenu | ||