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