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