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