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