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