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