system revision 1.10 1 1.10 agc $NetBSD: system,v 1.10 2012/01/15 03:11:13 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.9 agc The following projects will appear in NetBSD 6.0:
10 1.6 agc 1. 64-bit time values supported
11 1.6 agc 2. Better Kernel Modules support
12 1.8 agc 5. namei() tactical changes
13 1.9 agc 9. namei() strategic changes
14 1.8 agc 10. emap (ephemeral mapping) support for i386 and amd64
15 1.8 agc 11. support for mDNSResponder
16 1.8 agc
17 1.9 agc The following projects may make it into future releases:
18 1.6 agc 3. Full kernel preemption for real-time threads
19 1.6 agc 4. POSIX shared memory
20 1.6 agc 6. Better resource controls
21 1.6 agc 7. Improved observability: online crashdumps, remote debugging
22 1.6 agc 8. Processor and cache topology aware scheduler
23 1.1 agc
24 1.1 agc We'll continue to update this roadmap as features and dates get firmed up.
25 1.1 agc
26 1.1 agc
27 1.1 agc Some explanations
28 1.1 agc =================
29 1.1 agc
30 1.6 agc 1. 64-bit time_t support
31 1.1 agc -------------------------
32 1.1 agc
33 1.1 agc The Unix 32-bit time_t value will overflow in 2037 - any mortgage calculations
34 1.1 agc which use a time_t value are in danger of overflowing at the present time -
35 1.1 agc and to address this, 64-bit time_t values will be used to contain the number
36 1.7 agc of seconds since 1970. This was completed in 5.99.7 by Christos (with no libc
37 1.7 agc major bump - kudos and respect), and will be in 6.0.
38 1.1 agc
39 1.1 agc Responsible: christos
40 1.1 agc
41 1.10 agc
42 1.6 agc 2. Better Kernel Module Support
43 1.6 agc -------------------------------
44 1.6 agc
45 1.6 agc Starting with 5.99.2, the kernel support for modules was enhanced by
46 1.6 agc ad, and GENERIC was switched over to be a MODULAR kernel. Support
47 1.6 agc from booting from modules, like ffs, was introduced at the same time.
48 1.6 agc Some work has been done by Luke Mewburn in this area to define module
49 1.6 agc locations and paths so that effective kernel development can be done
50 1.8 agc using modules. Kernel modules have been moved out of base.tgz and a new
51 1.8 agc modules.tgz has been created.
52 1.6 agc
53 1.6 agc Responsible: ad, lukem
54 1.6 agc
55 1.10 agc
56 1.7 agc 3. Full kernel preemption for real-time threads on non-x86
57 1.7 agc ----------------------------------------------------------
58 1.5 agc
59 1.7 agc With the revamp of the kernel concurrency model, much of the kernel is
60 1.7 agc fully multi-threaded and can therefore be preempted at any time. In
61 1.7 agc support of lower context switch and dispatch times for real-time
62 1.7 agc threads, full kernel preemption is being implemented. This has been
63 1.7 agc implemented already for i386 and x86_64 (and is in 5.0), but needs to
64 1.10 agc be extended to support ARM and other ports. MIPS has this, as does
65 1.10 agc PowerPC, but it is not yet enabled.
66 1.7 agc
67 1.7 agc Responsible: rmind
68 1.5 agc
69 1.9 agc
70 1.6 agc 4. POSIX shared memory
71 1.6 agc ----------------------
72 1.1 agc
73 1.10 agc Implement POSIX shared memory facilities, which can be used to create
74 1.10 agc the shared memory objects and add the memory locations to the address
75 1.10 agc space of a process. Changes were proposed on tech-kern, although
76 1.10 agc there were some concerns with the kernel implementation, and so a
77 1.10 agc different approach using wrapper functions on tmpfs is being aimed at
78 1.10 agc for 6.0.
79 1.1 agc
80 1.1 agc Responsible: rmind
81 1.1 agc
82 1.9 agc
83 1.6 agc 5. Incremental namei improvements, Phase 1
84 1.6 agc ------------------------------------------
85 1.1 agc
86 1.6 agc In NetBSD 5.99.15, some changes were made to split the namei() routine
87 1.6 agc up into logical parts, so that changes can be made to the constituent
88 1.7 agc parts in a less intrusive way. This is in the repository now, and will
89 1.7 agc be in 6.0.
90 1.1 agc
91 1.1 agc Responsible: dholland
92 1.1 agc
93 1.9 agc
94 1.6 agc 6. Better resource controls
95 1.6 agc ---------------------------
96 1.1 agc
97 1.1 agc A resource provisioning and control framework that extends beyond the
98 1.1 agc traditional Unix process limits.
99 1.1 agc
100 1.9 agc Responsible: TBD
101 1.9 agc
102 1.9 agc
103 1.6 agc 7. Improved observability: online crashdumps, remote debugging
104 1.6 agc --------------------------------------------------------------
105 1.1 agc
106 1.1 agc XXX crashdumps while the system is running
107 1.1 agc XXX firewire support in libkvm
108 1.1 agc
109 1.9 agc Responsible: TBD
110 1.9 agc
111 1.9 agc
112 1.6 agc 8. Processor and cache topology aware scheduler
113 1.6 agc -----------------------------------------------
114 1.1 agc
115 1.1 agc Implement the detection of the topology of the processors and caches.
116 1.1 agc Improve the scheduler to make decisions about thread migration
117 1.1 agc according to the topology, to get better thread affinity and less
118 1.1 agc cache thrashing, and thus improve overall performance in modern SMP
119 1.10 agc systems. Code has been written, but did not show any performance
120 1.10 agc impreovment. We will continue to monitor this area.
121 1.1 agc
122 1.1 agc Responsible: rmind
123 1.1 agc
124 1.9 agc
125 1.6 agc 9. Incremental namei improvements, Phase 2
126 1.6 agc ------------------------------------------
127 1.1 agc
128 1.7 agc Building on the namei() split which was introduced in 5.99.15 (see (5)
129 1.7 agc above), further changes will be introduced: see the changes to namei
130 1.7 agc outlined in Message-ID: <20080319053709.GB3951 (a] netbsd.org> for more
131 1.7 agc information. This will simplify the locking and behavior of namei()
132 1.7 agc calls within the kernel to resolve path names within file systems.
133 1.1 agc
134 1.1 agc Responsible: dholland
135 1.1 agc
136 1.1 agc
137 1.8 agc 10. Ephemeral Mapping
138 1.8 agc ---------------------
139 1.8 agc
140 1.8 agc Responsible: rmind
141 1.8 agc
142 1.8 agc
143 1.8 agc 11. Multicast DNS and DNS Service Discovery
144 1.8 agc -------------------------------------------
145 1.8 agc
146 1.8 agc mDNSResponder (also known as mdnsd on some systems) is a daemon invoked
147 1.8 agc at boot time to implement Multicast DNS and DNS Service Discovery. On Mac
148 1.8 agc OS X 10.6 (Snow Leopard), mDNSResponder is also the system-wide Unicast
149 1.8 agc DNS Resolver. Ty Sarna added support for mdnsd to NetBSD-current, and it
150 1.8 agc will appear in NetBSD 6.0.
151 1.8 agc
152 1.1 agc
153 1.5 agc Alistair Crooks
154 1.9 agc Sat Jan 14 11:40:49 PST 2012
155