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