aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/Kconfig
diff options
context:
space:
mode:
authorJeremy Erickson <jerickso@cs.unc.edu>2012-08-30 21:01:47 -0400
committerJeremy Erickson <jerickso@cs.unc.edu>2012-08-30 21:01:47 -0400
commitb1e1fea67bca3796d5f9133a92c300ec4fa93a4f (patch)
tree5cc1336e1fe1d6f93b1067e73e43381dd20db690 /litmus/Kconfig
parentf6f94e2ab1b33f0082ac22d71f66385a60d8157f (diff)
Bjoern's Dissertation Code with Priority Donationwip-splitting-omlp-jerickso
Diffstat (limited to 'litmus/Kconfig')
-rw-r--r--litmus/Kconfig185
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 @@
1menu "LITMUS^RT"
2
3menu "Scheduling"
4
5config 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
15config 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
26config 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
37endmenu
38
39menu "Real-Time Synchronization"
40
41config 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
52config 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
63endmenu
64
65menu "Tracing"
66
67config 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
88config 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
102config 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
122config 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
130config 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
143config 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
168config 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
183endmenu
184
185endmenu