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