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