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