system revision 1.5
11.5Sagc$NetBSD: system,v 1.5 2009/01/26 05:09:25 agc Exp $ 21.1Sagc 31.1SagcNetBSD System Roadmap 41.2Sjmmv===================== 51.1Sagc 61.1SagcThis is a small roadmap document, and deals with the main system 71.1Sagcaspects of the operating system. 81.1Sagc 91.3SjmmvNetBSD 5.0 will ship with the following main changes to the system: 101.1Sagc 111.1Sagc1. Modularized scheduler 121.1Sagc2. Real-time scheduling classes and priorities 131.1Sagc3. Processor sets, processor affinity and processor control 141.1Sagc4. Multiprocessor optimized scheduler 151.1Sagc5. High-performance 1:1 threading implementation 161.1Sagc6. Pushback of the global kernel lock 171.1Sagc7. New kernel concurrency model 181.1Sagc8. Multiprocessor optimized memory allocators 191.1Sagc9. POSIX asynchronous I/O and message queues 201.1Sagc10. In-kernel linker 211.1Sagc11. SysV IPC tuneables 221.1Sagc12. Improved observability: minidumps, lockstat and tprof 231.1Sagc13. Power management framework 241.1Sagc 251.5SagcThe following element has been added to the NetBSD-current tree, and will be 261.5Sagcin NetBSD 6.0 271.1Sagc 281.5Sagc14. 64-bit time values supported 291.1Sagc 301.1SagcThe following projects are expected to be included in NetBSD 6.0 311.1Sagc 321.5Sagc15. Full kernel preemption for real-time threads 331.5Sagc16. POSIX shared memory 341.5Sagc17. namei() tactical changes 351.1Sagc18. Better resource controls 361.1Sagc19. Improved observability: online crashdumps, remote debugging 371.1Sagc20. Processor and cache topology aware scheduler 381.1Sagc 391.5SagcThe timescales for 6.0 are not known at the present time, but we would 401.5Sagcexpect to branch 6.0 late in 2009, with a view to a 6.0 release in 411.5Sagcearly 2010. 421.1Sagc 431.1SagcWe'll continue to update this roadmap as features and dates get firmed up. 441.1Sagc 451.1Sagc 461.1SagcSome explanations 471.1Sagc================= 481.1Sagc 491.1Sagc1. Modularized scheduler 501.1Sagc------------------------ 511.1Sagc 521.1SagcTraditionally the only method of control on process scheduling was the 531.1Sagc'nice' value assigned to each process. The scheduler interface has been 541.1Sagcredesiged to allow for pluggable schedulers, selected at compile time. 551.1SagcAt the current time, there are no plans to switch schedulers at run-time, 561.1Sagcsince there is little appreciable gain to be had from that, and the extra 571.1Sagcperformance hit to provide this functionality is thought not to be worth 581.1Sagcit. 591.1Sagc 601.1SagcThe in-kernel scheduler interface has been enhanced to provide a framework 611.1Sagcfor adding new schedulers, called the common scheduler framework - more 621.1Sagcinformation can be found in the csf(9) manual page. 631.1Sagc 641.1SagcResponsible: ad, dsieger, rmind, yamt 651.1Sagc 661.1Sagc2. Real-time scheduling classes and priorities 671.1Sagc---------------------------------------------- 681.1Sagc 691.1SagcThe scheduler has been extended to allow provide multiple new priority 701.1Sagcbands, including real-time. POSIX standard interfaces for controlling 711.1Sagcthread priority and scheduling class have been implemented, along with 721.1Sagca command line tool to allow control by the system administrator. 731.1Sagc 741.1Sagc3. Processor sets, processor affinity and processor control 751.1Sagc----------------------------------------------------------- 761.1Sagc 771.1SagcA Solaris and HP-UX compatible interface for defining and controlling 781.1Sagcprocessor sets has been added. Processor sets allow applications and 791.1Sagcthe administrator complete flexibility in partitioning CPU resources 801.1Sagcamong applications, down to thread-level granularity. 811.1Sagc 821.1SagcLinux compatibile interface controlling processor affinity, similar 831.1Sagcin spirit to processor sets, is provided. 841.1Sagc 851.1SagcA new utility to control CPU status (cpuctl) is provided. cpuctl 861.1Sagcallows the administrator to enable and disable individual CPUs at 871.1Sagcthe software level, while the system is running. It is expected that 881.1Sagcthis will in time be extended to support full dynamic reconfiguration, 891.1Sagcin concert with a hypervisor such as Xen. 901.1Sagc 911.1Sagc4. Multiprocessor optimized scheduler 921.1Sagc------------------------------------- 931.1Sagc 941.1SagcAn intelligent, pluggable scheduler named M2 that is optimized for 951.1Sagcmultiprocessor systems, supports POSIX real-time extensions, 961.1Sagctime-sharing class, and implements thread affinity. 971.1Sagc 981.1Sagc5. High-performance 1:1 threading implementation 991.1Sagc------------------------------------------------ 1001.1Sagc 1011.1SagcA new lightweight 1:1 threading implementation, replacing the M:N based 1021.1Sagcimplementation found in NetBSD 4.0 and earlier. The new implementation is 1031.1Sagcmore correct according to POSIX thread standards, and provides a massive 1041.1Sagcperformance boost to threaded workloads in both uni- and multi-processor 1051.1Sagcconfigurations. 1061.1Sagc 1071.1Sagc6. Pushback of the global kernel lock 1081.1Sagc------------------------------------- 1091.1Sagc 1101.1SagcPreviously, most access to the kernel was single threaded on multiprocessor 1111.1Sagcsystems by the global kernel_lock. The kernel_lock has been pushed back to 1121.1Sagcto the device driver and wire-protocol layers, providing a significant 1131.1Sagcperformance boost on heavily loaded multiprocessor systems. 1141.1Sagc 1151.1Sagc7. New kernel concurrency model 1161.1Sagc------------------------------- 1171.1Sagc 1181.4SspzThe non-preemptive spinlock and "interrupt priority level" synchronization 1191.1Sagcmodel has been replaced wholesale with a hybrid thread/interrupt model. A 1201.1Sagcfull range of new, lightweight synchronization primitives are available to 1211.1Sagcthe kernel programmer, including: adaptive mutexes, reader/writer locks, 1221.1Sagcmemory barriers, atomic operations, threaded soft interrupts, generic cross 1231.1Sagccalls, workqueues, priority inheritance, and per-CPU storage. 1241.1Sagc 1251.1Sagc8. Multiprocessor optimized memory allocators 1261.1Sagc--------------------------------------------- 1271.1Sagc 1281.1SagcThe memory allocators in both the kernel and user space are now fully 1291.1Sagcoptimized for multiprocessor systems and eliminate the performance 1301.1Sagcdegradation typically associated with memory allocators in an MP setting. 1311.1Sagc 1321.1Sagc9. POSIX asynchronous I/O and message queues 1331.1Sagc--------------------------------------------- 1341.1Sagc 1351.1SagcA full implementation of the POSIX asynchronous I/O and message 1361.1Sagcqueue facilities is now available. 1371.1Sagc 1381.1Sagc10. In-kernel linker 1391.1Sagc-------------------- 1401.1Sagc 1411.1SagcA in-kernel ELF object linker has been added, and a revamped kernel module 1421.1Sagcinfrastructure developed to accompany it. It is expected that the kernel 1431.1Sagcwill become completely modular over time, while continuing to retain the 1441.1Sagcability to link to a single binary image for embedded and hobby systems. 1451.1Sagc 1461.1Sagc11. SysV IPC tuneables 1471.1Sagc---------------------- 1481.1Sagc 1491.1SagcParameters for the SVR3-compatible IPC mechanisms can now be tuned 1501.1Sagccompletely at runtime. 1511.1Sagc 1521.1Sagc12. Improved observability: minidumps, lockstat and tprof 1531.1Sagc--------------------------------------------------------- 1541.1Sagc 1551.1SagcThe x86 architecture now supports mini crash-dumps as a support aid for 1561.1Sagckernel debugging. Only memory contents actively in use by the kernel at 1571.1Sagcthe time of crash are dumped to and recovered from disk, an improvement 1581.1Sagcover the traditional scheme where the complete contents of memory is 1591.1Sagcdumped to disk. 1601.1Sagc 1611.1SagcThe lockstat and tprof commands have been addded to the system. lockstat 1621.1Sagcprovides a high-resolution description of lock activity in a running system. 1631.1Sagc 1641.1Sagctprof uses sample based profiling in conjuction with the available 1651.1Sagcperformance counters in order to better profile system activity. 1661.1Sagc 1671.3Sjmmv13. Power management framework 1681.3Sjmmv------------------------------ 1691.1Sagc 1701.1SagcA new power management framework has been introduced that improves 1711.1Sagchandling of device power state transitions. As power management support 1721.1Sagcis now integrated with the auto-configuration subsystem, the kernel can 1731.1Sagcensure that a parent device is powered on before attempting to access 1741.1Sagcthe device. 1751.1Sagc 1761.1SagcWith these changes comes an updated release of the Intel ACPI 1771.1SagcComponent Architecture and an x86 emulator which assists in restoring 1781.1Sagcuninitialized display adapters. 1791.1Sagc 1801.1SagcLeveraging this work, the i386 and amd64 kernels now support suspend 1811.1Sagcto RAM in uni- and multi-processor configurations on ACPI-capable 1821.1Sagcmachines. This support has been successfully tested on a wide variety of 1831.1Sagclaptops, including (but not limited to) recent systems from Dell, IBM/Lenovo, 1841.1SagcFujitsu, Toshiba, and Sony. 1851.1Sagc 1861.1SagcResponsible: jmcneill, joerg 1871.1Sagc 1881.5Sagc14. 64-bit time_t support 1891.1Sagc------------------------- 1901.1Sagc 1911.1SagcThe Unix 32-bit time_t value will overflow in 2037 - any mortgage calculations 1921.1Sagcwhich use a time_t value are in danger of overflowing at the present time - 1931.1Sagcand to address this, 64-bit time_t values will be used to contain the number 1941.1Sagcof seconds since 1970. 1951.1Sagc 1961.1SagcResponsible: christos 1971.1Sagc 1981.5Sagc15. Full kernel preemption for real-time threads 1991.5Sagc------------------------------------------------ 2001.5Sagc 2011.5SagcWith the revamp of the kernel concurrency model, much of the kernel is fully 2021.5Sagcmulti-threaded and can therefore be preempted at any time. In support of 2031.5Sagclower context switch and dispatch times for real-time threads, full kernel 2041.5Sagcpreemption is being implemented. 2051.5Sagc 2061.1Sagc16. POSIX shared memory 2071.1Sagc----------------------- 2081.1Sagc 2091.1SagcImplement POSIX shared memory facilities, which can be used to create the 2101.1Sagcshared memory objects and add the memory locations to the address space of 2111.1Sagca process. 2121.1Sagc 2131.1SagcResponsible: rmind 2141.1Sagc 2151.1Sagc17. Incremental namei improvements, Phase 1 2161.1Sagc------------------------------------------- 2171.1Sagc 2181.1SagcImplement the rest of the changes to namei outlined in Message-ID: 2191.1Sagc<20080319053709.GB3951@netbsd.org>. Simplify the locking and behavior 2201.1Sagcof namei() calls within the kernel to resolve path names within file 2211.1Sagcsystems. This phase simplifies the majority of calls to namei(). 2221.1Sagc 2231.1SagcResponsible: dholland 2241.1Sagc 2251.1Sagc18. Better resource controls 2261.1Sagc---------------------------- 2271.1Sagc 2281.1SagcA resource provisioning and control framework that extends beyond the 2291.1Sagctraditional Unix process limits. 2301.1Sagc 2311.1Sagc19. Improved observability: online crashdumps, remote debugging 2321.1Sagc--------------------------------------------------------------- 2331.1Sagc 2341.1SagcXXX crashdumps while the system is running 2351.1SagcXXX firewire support in libkvm 2361.1Sagc 2371.1Sagc20. Processor and cache topology aware scheduler 2381.1Sagc------------------------------------------------ 2391.1Sagc 2401.1SagcImplement the detection of the topology of the processors and caches. 2411.1SagcImprove the scheduler to make decisions about thread migration 2421.1Sagcaccording to the topology, to get better thread affinity and less 2431.1Sagccache thrashing, and thus improve overall performance in modern SMP 2441.1Sagcsystems. 2451.1Sagc 2461.1SagcResponsible: rmind 2471.1Sagc 2481.1Sagc29. Incremental namei improvements, Phase 2 2491.1Sagc------------------------------------------- 2501.1Sagc 2511.1SagcImplement the rest of the changes to namei outlined in Message-ID: 2521.1Sagc<20080319053709.GB3951@netbsd.org>. Simplify the locking and behavior 2531.1Sagcof namei() calls within the kernel to resolve path names within file 2541.1Sagcsystems. 2551.1Sagc 2561.1SagcResponsible: dholland 2571.1Sagc 2581.1Sagc 2591.1Sagc 2601.1SagcAndrew Doran 2611.5SagcAlistair Crooks 2621.5SagcSun 25 Jan 2009 21:03:04 PST 263