$NetBSD: system,v 1.13 2017/01/13 10:14:58 dholland Exp $

NetBSD System Roadmap
=====================

This is a roadmap document dealing deals with core system aspects of
the operating system.

The following elements, projects, and goals are considered strategic
priorities for the project:

1. Tickless timing and scheduling (discussed in the mobile roadmap)
2. Long-term graphics architecture (discussed in the desktop roadmap)
8. Processor and cache topology aware scheduler

The following elements, projects, and goals are not strategic
priorities but are still important undertakings worth doing:

3. Full kernel preemption for real-time threads on non-x86
4. POSIX shared memory
6. Better resource controls
7. Improved observability: online crashdumps, remote debugging

The following elements, projects, and goals are perhaps less pressing;
this doesn't mean one shouldn't work on them but the expected payoff
is perhaps less than for other things:


Some explanations
=================

3. Full kernel preemption for real-time threads on non-x86
----------------------------------------------------------

With the revamp of the kernel concurrency model, much of the kernel is
fully multi-threaded and can therefore be preempted at any time.  In
support of lower context switch and dispatch times for real-time
threads, full kernel preemption is being implemented.  This has been
implemented already for i386 and x86_64 (and is in 5.0), but needs to
be extended to support ARM and other ports.  MIPS has this, as does
PowerPC, but it is not yet enabled.

Responsible: rmind


4. POSIX shared memory
----------------------

Implement POSIX shared memory facilities, which can be used to create
the shared memory objects and add the memory locations to the address
space of a process.  Changes were proposed on tech-kern, although
there were some concerns with the kernel implementation, and so a
different approach using wrapper functions on tmpfs is being aimed at
for 6.0.

XXX: what's the current state?

Responsible: rmind


6. Better resource controls
---------------------------

A resource provisioning and control framework that extends beyond the
traditional Unix process limits.

Responsible: TBD


7. Improved observability: online crashdumps, remote debugging
--------------------------------------------------------------

XXX crashdumps while the system is running
XXX firewire support in libkvm

Responsible: TBD


8. Processor and cache topology aware scheduler
-----------------------------------------------

Implement the detection of the topology of the processors and caches. 
Improve the scheduler to make decisions about thread migration
according to the topology, to get better thread affinity and less
cache thrashing, and thus improve overall performance in modern SMP
systems. Code has been written, but did not show any performance
improvement. We will continue to monitor this area.

Responsible: rmind


Alistair Crooks
Sat Jan 14 11:40:49 PST 2012