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