system revision 1.4.2.2 1 1.4.2.2 matt $NetBSD: system,v 1.4.2.2 2008/03/23 00:23:07 matt Exp $
2 1.4.2.2 matt
3 1.4.2.2 matt NetBSD System Roadmap
4 1.4.2.2 matt =====================
5 1.4.2.2 matt
6 1.4.2.2 matt This is a small roadmap document, and deals with the main system
7 1.4.2.2 matt aspects of the operating system.
8 1.4.2.2 matt
9 1.4.2.2 matt NetBSD 5.0 will ship with the following main changes to the system:
10 1.4.2.2 matt
11 1.4.2.2 matt 1. Modularized scheduler
12 1.4.2.2 matt 2. Real-time scheduling classes and priorities
13 1.4.2.2 matt 3. Processor sets, processor affinity and processor control
14 1.4.2.2 matt 4. Multiprocessor optimized scheduler
15 1.4.2.2 matt 5. High-performance 1:1 threading implementation
16 1.4.2.2 matt 6. Pushback of the global kernel lock
17 1.4.2.2 matt 7. New kernel concurrency model
18 1.4.2.2 matt 8. Multiprocessor optimized memory allocators
19 1.4.2.2 matt 9. POSIX asynchronous I/O and message queues
20 1.4.2.2 matt 10. In-kernel linker
21 1.4.2.2 matt 11. SysV IPC tuneables
22 1.4.2.2 matt 12. Improved observability: minidumps, lockstat and tprof
23 1.4.2.2 matt 13. Power management framework
24 1.4.2.2 matt
25 1.4.2.2 matt We are working on the following elements, and expect them to be in 5.0:
26 1.4.2.2 matt
27 1.4.2.2 matt 14. Full kernel preemption for real-time threads
28 1.4.2.2 matt 15. 64-bit time values supported
29 1.4.2.2 matt 16. POSIX shared memory
30 1.4.2.2 matt 17. namei() tactical changes
31 1.4.2.2 matt
32 1.4.2.2 matt The following projects are expected to be included in NetBSD 6.0
33 1.4.2.2 matt
34 1.4.2.2 matt 18. Better resource controls
35 1.4.2.2 matt 19. Improved observability: online crashdumps, remote debugging
36 1.4.2.2 matt 20. Processor and cache topology aware scheduler
37 1.4.2.2 matt
38 1.4.2.2 matt We expect to branch for the 5.0 release in April or May 2008, which would
39 1.4.2.2 matt put a NetBSD 5.0 Release date in Q4 2008. An annual release cycle would
40 1.4.2.2 matt thus mean that 6.0 would be branched in April or May 2009.
41 1.4.2.2 matt
42 1.4.2.2 matt Pictorially, this looks like:
43 1.4.2.2 matt
44 1.4.2.2 matt 2008 2009
45 1.4.2.2 matt Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug
46 1.4.2.2 matt |===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|
47 1.4.2.2 matt
48 1.4.2.2 matt | ------- 5.0 --------- | | ------- 6.0
49 1.4.2.2 matt branch release branch
50 1.4.2.2 matt
51 1.4.2.2 matt 1-8 11,15-17,18 9,10,12-14 19 20
52 1.4.2.2 matt
53 1.4.2.2 matt We'll continue to update this roadmap as features and dates get firmed up.
54 1.4.2.2 matt
55 1.4.2.2 matt
56 1.4.2.2 matt Some explanations
57 1.4.2.2 matt =================
58 1.4.2.2 matt
59 1.4.2.2 matt 1. Modularized scheduler
60 1.4.2.2 matt ------------------------
61 1.4.2.2 matt
62 1.4.2.2 matt Traditionally the only method of control on process scheduling was the
63 1.4.2.2 matt 'nice' value assigned to each process. The scheduler interface has been
64 1.4.2.2 matt redesiged to allow for pluggable schedulers, selected at compile time.
65 1.4.2.2 matt At the current time, there are no plans to switch schedulers at run-time,
66 1.4.2.2 matt since there is little appreciable gain to be had from that, and the extra
67 1.4.2.2 matt performance hit to provide this functionality is thought not to be worth
68 1.4.2.2 matt it.
69 1.4.2.2 matt
70 1.4.2.2 matt The in-kernel scheduler interface has been enhanced to provide a framework
71 1.4.2.2 matt for adding new schedulers, called the common scheduler framework - more
72 1.4.2.2 matt information can be found in the csf(9) manual page.
73 1.4.2.2 matt
74 1.4.2.2 matt Responsible: ad, dsieger, rmind, yamt
75 1.4.2.2 matt
76 1.4.2.2 matt 2. Real-time scheduling classes and priorities
77 1.4.2.2 matt ----------------------------------------------
78 1.4.2.2 matt
79 1.4.2.2 matt The scheduler has been extended to allow provide multiple new priority
80 1.4.2.2 matt bands, including real-time. POSIX standard interfaces for controlling
81 1.4.2.2 matt thread priority and scheduling class have been implemented, along with
82 1.4.2.2 matt a command line tool to allow control by the system administrator.
83 1.4.2.2 matt
84 1.4.2.2 matt 3. Processor sets, processor affinity and processor control
85 1.4.2.2 matt -----------------------------------------------------------
86 1.4.2.2 matt
87 1.4.2.2 matt A Solaris and HP-UX compatible interface for defining and controlling
88 1.4.2.2 matt processor sets has been added. Processor sets allow applications and
89 1.4.2.2 matt the administrator complete flexibility in partitioning CPU resources
90 1.4.2.2 matt among applications, down to thread-level granularity.
91 1.4.2.2 matt
92 1.4.2.2 matt Linux compatibile interface controlling processor affinity, similar
93 1.4.2.2 matt in spirit to processor sets, is provided.
94 1.4.2.2 matt
95 1.4.2.2 matt A new utility to control CPU status (cpuctl) is provided. cpuctl
96 1.4.2.2 matt allows the administrator to enable and disable individual CPUs at
97 1.4.2.2 matt the software level, while the system is running. It is expected that
98 1.4.2.2 matt this will in time be extended to support full dynamic reconfiguration,
99 1.4.2.2 matt in concert with a hypervisor such as Xen.
100 1.4.2.2 matt
101 1.4.2.2 matt 4. Multiprocessor optimized scheduler
102 1.4.2.2 matt -------------------------------------
103 1.4.2.2 matt
104 1.4.2.2 matt An intelligent, pluggable scheduler named M2 that is optimized for
105 1.4.2.2 matt multiprocessor systems, supports POSIX real-time extensions,
106 1.4.2.2 matt time-sharing class, and implements thread affinity.
107 1.4.2.2 matt
108 1.4.2.2 matt 5. High-performance 1:1 threading implementation
109 1.4.2.2 matt ------------------------------------------------
110 1.4.2.2 matt
111 1.4.2.2 matt A new lightweight 1:1 threading implementation, replacing the M:N based
112 1.4.2.2 matt implementation found in NetBSD 4.0 and earlier. The new implementation is
113 1.4.2.2 matt more correct according to POSIX thread standards, and provides a massive
114 1.4.2.2 matt performance boost to threaded workloads in both uni- and multi-processor
115 1.4.2.2 matt configurations.
116 1.4.2.2 matt
117 1.4.2.2 matt 6. Pushback of the global kernel lock
118 1.4.2.2 matt -------------------------------------
119 1.4.2.2 matt
120 1.4.2.2 matt Previously, most access to the kernel was single threaded on multiprocessor
121 1.4.2.2 matt systems by the global kernel_lock. The kernel_lock has been pushed back to
122 1.4.2.2 matt to the device driver and wire-protocol layers, providing a significant
123 1.4.2.2 matt performance boost on heavily loaded multiprocessor systems.
124 1.4.2.2 matt
125 1.4.2.2 matt 7. New kernel concurrency model
126 1.4.2.2 matt -------------------------------
127 1.4.2.2 matt
128 1.4.2.2 matt The non-preemptive spinlock and "interrupt priority level" synchronization
129 1.4.2.2 matt model has been replaced wholesale with a hybrid thread/interrupt model. A
130 1.4.2.2 matt full range of new, lightweight synchronization primitives are available to
131 1.4.2.2 matt the kernel programmer, including: adaptive mutexes, reader/writer locks,
132 1.4.2.2 matt memory barriers, atomic operations, threaded soft interrupts, generic cross
133 1.4.2.2 matt calls, workqueues, priority inheritance, and per-CPU storage.
134 1.4.2.2 matt
135 1.4.2.2 matt 8. Multiprocessor optimized memory allocators
136 1.4.2.2 matt ---------------------------------------------
137 1.4.2.2 matt
138 1.4.2.2 matt The memory allocators in both the kernel and user space are now fully
139 1.4.2.2 matt optimized for multiprocessor systems and eliminate the performance
140 1.4.2.2 matt degradation typically associated with memory allocators in an MP setting.
141 1.4.2.2 matt
142 1.4.2.2 matt 9. POSIX asynchronous I/O and message queues
143 1.4.2.2 matt ---------------------------------------------
144 1.4.2.2 matt
145 1.4.2.2 matt A full implementation of the POSIX asynchronous I/O and message
146 1.4.2.2 matt queue facilities is now available.
147 1.4.2.2 matt
148 1.4.2.2 matt 10. In-kernel linker
149 1.4.2.2 matt --------------------
150 1.4.2.2 matt
151 1.4.2.2 matt A in-kernel ELF object linker has been added, and a revamped kernel module
152 1.4.2.2 matt infrastructure developed to accompany it. It is expected that the kernel
153 1.4.2.2 matt will become completely modular over time, while continuing to retain the
154 1.4.2.2 matt ability to link to a single binary image for embedded and hobby systems.
155 1.4.2.2 matt
156 1.4.2.2 matt 11. SysV IPC tuneables
157 1.4.2.2 matt ----------------------
158 1.4.2.2 matt
159 1.4.2.2 matt Parameters for the SVR3-compatible IPC mechanisms can now be tuned
160 1.4.2.2 matt completely at runtime.
161 1.4.2.2 matt
162 1.4.2.2 matt 12. Improved observability: minidumps, lockstat and tprof
163 1.4.2.2 matt ---------------------------------------------------------
164 1.4.2.2 matt
165 1.4.2.2 matt The x86 architecture now supports mini crash-dumps as a support aid for
166 1.4.2.2 matt kernel debugging. Only memory contents actively in use by the kernel at
167 1.4.2.2 matt the time of crash are dumped to and recovered from disk, an improvement
168 1.4.2.2 matt over the traditional scheme where the complete contents of memory is
169 1.4.2.2 matt dumped to disk.
170 1.4.2.2 matt
171 1.4.2.2 matt The lockstat and tprof commands have been addded to the system. lockstat
172 1.4.2.2 matt provides a high-resolution description of lock activity in a running system.
173 1.4.2.2 matt
174 1.4.2.2 matt tprof uses sample based profiling in conjuction with the available
175 1.4.2.2 matt performance counters in order to better profile system activity.
176 1.4.2.2 matt
177 1.4.2.2 matt 13. Power management framework
178 1.4.2.2 matt ------------------------------
179 1.4.2.2 matt
180 1.4.2.2 matt A new power management framework has been introduced that improves
181 1.4.2.2 matt handling of device power state transitions. As power management support
182 1.4.2.2 matt is now integrated with the auto-configuration subsystem, the kernel can
183 1.4.2.2 matt ensure that a parent device is powered on before attempting to access
184 1.4.2.2 matt the device.
185 1.4.2.2 matt
186 1.4.2.2 matt With these changes comes an updated release of the Intel ACPI
187 1.4.2.2 matt Component Architecture and an x86 emulator which assists in restoring
188 1.4.2.2 matt uninitialized display adapters.
189 1.4.2.2 matt
190 1.4.2.2 matt Leveraging this work, the i386 and amd64 kernels now support suspend
191 1.4.2.2 matt to RAM in uni- and multi-processor configurations on ACPI-capable
192 1.4.2.2 matt machines. This support has been successfully tested on a wide variety of
193 1.4.2.2 matt laptops, including (but not limited to) recent systems from Dell, IBM/Lenovo,
194 1.4.2.2 matt Fujitsu, Toshiba, and Sony.
195 1.4.2.2 matt
196 1.4.2.2 matt Responsible: jmcneill, joerg
197 1.4.2.2 matt
198 1.4.2.2 matt 14. Full kernel preemption for real-time threads
199 1.4.2.2 matt ------------------------------------------------
200 1.4.2.2 matt
201 1.4.2.2 matt With the revamp of the kernel concurrency model, much of the kernel is fully
202 1.4.2.2 matt multi-threaded and can therefore be preempted at any time. In support of
203 1.4.2.2 matt lower context switch and dispatch times for real-time threads, full kernel
204 1.4.2.2 matt preemption is being implemented.
205 1.4.2.2 matt
206 1.4.2.2 matt 15. 64-bit time_t support
207 1.4.2.2 matt -------------------------
208 1.4.2.2 matt
209 1.4.2.2 matt The Unix 32-bit time_t value will overflow in 2037 - any mortgage calculations
210 1.4.2.2 matt which use a time_t value are in danger of overflowing at the present time -
211 1.4.2.2 matt and to address this, 64-bit time_t values will be used to contain the number
212 1.4.2.2 matt of seconds since 1970.
213 1.4.2.2 matt
214 1.4.2.2 matt Responsible: christos
215 1.4.2.2 matt
216 1.4.2.2 matt 16. POSIX shared memory
217 1.4.2.2 matt -----------------------
218 1.4.2.2 matt
219 1.4.2.2 matt Implement POSIX shared memory facilities, which can be used to create the
220 1.4.2.2 matt shared memory objects and add the memory locations to the address space of
221 1.4.2.2 matt a process.
222 1.4.2.2 matt
223 1.4.2.2 matt Responsible: rmind
224 1.4.2.2 matt
225 1.4.2.2 matt 17. Incremental namei improvements, Phase 1
226 1.4.2.2 matt -------------------------------------------
227 1.4.2.2 matt
228 1.4.2.2 matt Implement the rest of the changes to namei outlined in Message-ID:
229 1.4.2.2 matt <20080319053709.GB3951 (a] netbsd.org>. Simplify the locking and behavior
230 1.4.2.2 matt of namei() calls within the kernel to resolve path names within file
231 1.4.2.2 matt systems. This phase simplifies the majority of calls to namei().
232 1.4.2.2 matt
233 1.4.2.2 matt Responsible: dholland
234 1.4.2.2 matt
235 1.4.2.2 matt 18. Better resource controls
236 1.4.2.2 matt ----------------------------
237 1.4.2.2 matt
238 1.4.2.2 matt A resource provisioning and control framework that extends beyond the
239 1.4.2.2 matt traditional Unix process limits.
240 1.4.2.2 matt
241 1.4.2.2 matt 19. Improved observability: online crashdumps, remote debugging
242 1.4.2.2 matt ---------------------------------------------------------------
243 1.4.2.2 matt
244 1.4.2.2 matt XXX crashdumps while the system is running
245 1.4.2.2 matt XXX firewire support in libkvm
246 1.4.2.2 matt
247 1.4.2.2 matt 20. Processor and cache topology aware scheduler
248 1.4.2.2 matt ------------------------------------------------
249 1.4.2.2 matt
250 1.4.2.2 matt Implement the detection of the topology of the processors and caches.
251 1.4.2.2 matt Improve the scheduler to make decisions about thread migration
252 1.4.2.2 matt according to the topology, to get better thread affinity and less
253 1.4.2.2 matt cache thrashing, and thus improve overall performance in modern SMP
254 1.4.2.2 matt systems.
255 1.4.2.2 matt
256 1.4.2.2 matt Responsible: rmind
257 1.4.2.2 matt
258 1.4.2.2 matt 29. Incremental namei improvements, Phase 2
259 1.4.2.2 matt -------------------------------------------
260 1.4.2.2 matt
261 1.4.2.2 matt Implement the rest of the changes to namei outlined in Message-ID:
262 1.4.2.2 matt <20080319053709.GB3951 (a] netbsd.org>. Simplify the locking and behavior
263 1.4.2.2 matt of namei() calls within the kernel to resolve path names within file
264 1.4.2.2 matt systems.
265 1.4.2.2 matt
266 1.4.2.2 matt Responsible: dholland
267 1.4.2.2 matt
268 1.4.2.2 matt
269 1.4.2.2 matt
270 1.4.2.2 matt Andrew Doran
271 1.4.2.2 matt Wed Mar 19 18:26:49 GMT 2008
272