Home | History | Annotate | Line # | Download | only in roadmaps
system revision 1.2
      1 $NetBSD: system,v 1.2 2008/03/19 20:34:34 jmmv Exp $
      2 
      3 NetBSD System Roadmap
      4 =====================
      5 
      6 This is a small roadmap document, and deals with the main system
      7 aspects of the operating system.
      8 
      9 NetBSD 5.0 will ship with the following storage elements in place:
     10 
     11 1. Modularized scheduler
     12 2. Real-time scheduling classes and priorities
     13 3. Processor sets, processor affinity and processor control
     14 4. Multiprocessor optimized scheduler
     15 5. High-performance 1:1 threading implementation
     16 6. Pushback of the global kernel lock
     17 7. New kernel concurrency model
     18 8. Multiprocessor optimized memory allocators
     19 9. POSIX asynchronous I/O and message queues
     20 10. In-kernel linker
     21 11. SysV IPC tuneables
     22 12. Improved observability: minidumps, lockstat and tprof
     23 13. Power management framework
     24 
     25 We are working on the following elements, and expect them to be in 5.0:
     26 
     27 14. Full kernel preemption for real-time threads
     28 15. 64-bit time values supported
     29 16. POSIX shared memory
     30 17. namei() tactical changes
     31 
     32 The following projects are expected to be included in NetBSD 6.0
     33 
     34 18. Better resource controls
     35 19. Improved observability: online crashdumps, remote debugging
     36 20. Processor and cache topology aware scheduler
     37 
     38 We expect to branch for the 5.0 release in April or May 2008, which would
     39 put a NetBSD 5.0 Release date in Q4 2008. An annual release cycle would
     40 thus mean that 6.0 would be branched in April or May 2009.
     41 
     42 Pictorially, this looks like:
     43 
     44  2008                                        2009
     45  Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug
     46 |===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|===|
     47 
     48                 | ------- 5.0 --------- |                       | ------- 6.0
     49               branch                  release                 branch
     50 
     51  1-8  11,15-17,18 9,10,12-14                 19      20
     52 
     53 We'll continue to update this roadmap as features and dates get firmed up.
     54 
     55 
     56 Some explanations
     57 =================
     58 
     59 1. Modularized scheduler
     60 ------------------------
     61 
     62 Traditionally the only method of control on process scheduling was the
     63 'nice' value assigned to each process.  The scheduler interface has been
     64 redesiged to allow for pluggable schedulers, selected at compile time.
     65 At the current time, there are no plans to switch schedulers at run-time,
     66 since there is little appreciable gain to be had from that, and the extra
     67 performance hit to provide this functionality is thought not to be worth
     68 it.
     69 
     70 The in-kernel scheduler interface has been enhanced to provide a framework
     71 for adding new schedulers, called the common scheduler framework - more
     72 information can be found in the csf(9) manual page.
     73 
     74 Responsible: ad, dsieger, rmind, yamt
     75 
     76 2. Real-time scheduling classes and priorities
     77 ----------------------------------------------
     78 
     79 The scheduler has been extended to allow provide multiple new priority
     80 bands, including real-time.  POSIX standard interfaces for controlling
     81 thread priority and scheduling class have been implemented, along with
     82 a command line tool to allow control by the system administrator.
     83 
     84 3. Processor sets, processor affinity and processor control
     85 -----------------------------------------------------------
     86 
     87 A Solaris and HP-UX compatible interface for defining and controlling
     88 processor sets has been added.  Processor sets allow applications and
     89 the administrator complete flexibility in partitioning CPU resources
     90 among applications, down to thread-level granularity.
     91 
     92 Linux compatibile interface controlling processor affinity, similar
     93 in spirit to processor sets, is provided.
     94 
     95 A new utility to control CPU status (cpuctl) is provided.  cpuctl
     96 allows the administrator to enable and disable individual CPUs at
     97 the software level, while the system is running.  It is expected that
     98 this will in time be extended to support full dynamic reconfiguration,
     99 in concert with a hypervisor such as Xen.
    100 
    101 4. Multiprocessor optimized scheduler
    102 -------------------------------------
    103 
    104 An intelligent, pluggable scheduler named M2 that is optimized for
    105 multiprocessor systems, supports POSIX real-time extensions,
    106 time-sharing class, and implements thread affinity.
    107 
    108 5. High-performance 1:1 threading implementation
    109 ------------------------------------------------
    110 
    111 A new lightweight 1:1 threading implementation, replacing the M:N based
    112 implementation found in NetBSD 4.0 and earlier.  The new implementation is
    113 more correct according to POSIX thread standards, and provides a massive
    114 performance boost to threaded workloads in both uni- and multi-processor
    115 configurations.
    116 
    117 6. Pushback of the global kernel lock
    118 -------------------------------------
    119 
    120 Previously, most access to the kernel was single threaded on multiprocessor
    121 systems by the global kernel_lock.  The kernel_lock has been pushed back to
    122 to the device driver and wire-protocol layers, providing a significant
    123 performance boost on heavily loaded multiprocessor systems.
    124 
    125 7. New kernel concurrency model
    126 -------------------------------
    127 
    128 The non-premptive spinlock and "interrupt priority level" synchronization
    129 model has been replaced wholesale with a hybrid thread/interrupt model.  A
    130 full range of new, lightweight synchronization primitives are available to
    131 the kernel programmer, including: adaptive mutexes, reader/writer locks,
    132 memory barriers, atomic operations, threaded soft interrupts, generic cross
    133 calls, workqueues, priority inheritance, and per-CPU storage.
    134 
    135 8. Multiprocessor optimized memory allocators
    136 ---------------------------------------------
    137 
    138 The memory allocators in both the kernel and user space are now fully
    139 optimized for multiprocessor systems and eliminate the performance
    140 degradation typically associated with memory allocators in an MP setting.
    141 
    142 9. POSIX asynchronous I/O and message queues
    143 ---------------------------------------------
    144 
    145 A full implementation of the POSIX asynchronous I/O and message
    146 queue facilities is now available.
    147 
    148 10. In-kernel linker
    149 --------------------
    150 
    151 A in-kernel ELF object linker has been added, and a revamped kernel module
    152 infrastructure developed to accompany it.  It is expected that the kernel
    153 will become completely modular over time, while continuing to retain the
    154 ability to link to a single binary image for embedded and hobby systems.
    155 
    156 11. SysV IPC tuneables
    157 ----------------------
    158 
    159 Parameters for the SVR3-compatible IPC mechanisms can now be tuned
    160 completely at runtime.
    161 
    162 12. Improved observability: minidumps, lockstat and tprof
    163 ---------------------------------------------------------
    164 
    165 The x86 architecture now supports mini crash-dumps as a support aid for
    166 kernel debugging. Only memory contents actively in use by the kernel at
    167 the time of crash are dumped to and recovered from disk, an improvement
    168 over the traditional scheme where the complete contents of memory is
    169 dumped to disk.
    170 
    171 The lockstat and tprof commands have been addded to the system. lockstat
    172 provides a high-resolution description of lock activity in a running system.
    173 
    174 tprof uses sample based profiling in conjuction with the available
    175 performance counters in order to better profile system activity.
    176 
    177 13. Power managment framework
    178 -----------------------------
    179 
    180 A new power management framework has been introduced that improves
    181 handling of device power state transitions. As power management support
    182 is now integrated with the auto-configuration subsystem, the kernel can
    183 ensure that a parent device is powered on before attempting to access
    184 the device.
    185 
    186 With these changes comes an updated release of the Intel ACPI
    187 Component Architecture and an x86 emulator which assists in restoring
    188 uninitialized display adapters.
    189 
    190 Leveraging this work, the i386 and amd64 kernels now support suspend
    191 to RAM in uni- and multi-processor configurations on ACPI-capable
    192 machines. This support has been successfully tested on a wide variety of
    193 laptops, including (but not limited to) recent systems from Dell, IBM/Lenovo,
    194 Fujitsu, Toshiba, and Sony.
    195 
    196 Responsible: jmcneill, joerg
    197 
    198 14. Full kernel preemption for real-time threads
    199 ------------------------------------------------
    200 
    201 With the revamp of the kernel concurrency model, much of the kernel is fully
    202 multi-threaded and can therefore be preempted at any time. In support of
    203 lower context switch and dispatch times for real-time threads, full kernel
    204 preemption is being implemented.
    205 
    206 15. 64-bit time_t support
    207 -------------------------
    208 
    209 The Unix 32-bit time_t value will overflow in 2037 - any mortgage calculations
    210 which use a time_t value are in danger of overflowing at the present time -
    211 and to address this, 64-bit time_t values will be used to contain the number
    212 of seconds since 1970.
    213 
    214 Responsible: christos
    215 
    216 16. POSIX shared memory
    217 -----------------------
    218 
    219 Implement POSIX shared memory facilities, which can be used to create the
    220 shared memory objects and add the memory locations to the address space of
    221 a process.
    222 
    223 Responsible: rmind
    224 
    225 17. Incremental namei improvements, Phase 1
    226 -------------------------------------------
    227 
    228 Implement the rest of the changes to namei outlined in Message-ID: 
    229 <20080319053709.GB3951 (a] netbsd.org>.  Simplify the locking and behavior
    230 of namei() calls within the kernel to resolve path names within file
    231 systems. This phase simplifies the majority of calls to namei().
    232 
    233 Responsible: dholland
    234 
    235 18. Better resource controls
    236 ----------------------------
    237 
    238 A resource provisioning and control framework that extends beyond the
    239 traditional Unix process limits.
    240 
    241 19. Improved observability: online crashdumps, remote debugging
    242 ---------------------------------------------------------------
    243 
    244 XXX crashdumps while the system is running
    245 XXX firewire support in libkvm
    246 
    247 20. Processor and cache topology aware scheduler
    248 ------------------------------------------------
    249 
    250 Implement the detection of the topology of the processors and caches. 
    251 Improve the scheduler to make decisions about thread migration
    252 according to the topology, to get better thread affinity and less
    253 cache thrashing, and thus improve overall performance in modern SMP
    254 systems.
    255 
    256 Responsible: rmind
    257 
    258 29. Incremental namei improvements, Phase 2
    259 -------------------------------------------
    260 
    261 Implement the rest of the changes to namei outlined in Message-ID: 
    262 <20080319053709.GB3951 (a] netbsd.org>.  Simplify the locking and behavior
    263 of namei() calls within the kernel to resolve path names within file
    264 systems.
    265 
    266 Responsible: dholland
    267 
    268 
    269 
    270 Andrew Doran
    271 Wed Mar 19 18:26:49 GMT 2008
    272