-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtechnology.html
More file actions
301 lines (277 loc) · 15.4 KB
/
technology.html
File metadata and controls
301 lines (277 loc) · 15.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
---
layout: default
title: "Technology - Split-Kernel Architecture"
description: "The Multikernel system offloads device drivers and interrupt processing to a dedicated kernel, enabling stronger isolation, native performance, and independent kernel lifecycle management."
permalink: /technology.html
---
<main>
<!-- Hero Section -->
<section class="hero">
<div class="hero-container">
<div class="hero-badge">
<i data-lucide="cpu"></i>
<span>Technology Overview</span>
</div>
<h1>Split-Kernel Architecture</h1>
<p class="subtitle">The Multikernel system offloads all device drivers and interrupt processing to a dedicated device-kernel. Applications run in isolated app-kernels with dedicated resources and native hardware performance.</p>
<div class="button-group">
<a href="/getting-started.html" class="btn btn-primary">
<i data-lucide="rocket"></i>
Get Started
</a>
<a href="https://github.com/multikernel" target="_blank" rel="noopener noreferrer" class="btn btn-secondary">
<i data-lucide="github"></i>
View Source
</a>
</div>
</div>
</section>
<!-- Why -->
<section id="concept" class="value-section">
<div class="section-container">
<div class="value-content">
<div class="value-text">
<div class="section-badge">
<i data-lucide="layers"></i>
<span>Background</span>
</div>
<h2 class="section-title">Why Split-Kernel</h2>
<p class="section-subtitle">A traditional Linux kernel runs application code, device drivers, and interrupt handlers on the same cores. Under load, interrupt processing steals CPU cycles from applications. Kernel workarounds like isolcpus, irqaffinity, NAPI threaded mode, and RPS/RFS reduce the problem but cannot eliminate it. Within a single kernel, bottom-half work can always reach application cores.</p>
<p class="section-subtitle">The split-kernel architecture removes this contention at the design level. Device processing is offloaded to a dedicated kernel on dedicated cores. Applications run in their own kernels where interrupts are structurally absent. Because Multikernel runs directly on hardware with no hypervisor, it works inside any standard cloud VM, providing kernel-level isolation without the performance penalty of nested virtualization.</p>
</div>
<div class="value-visual">
<div class="architecture-preview">
<div class="preview-title">Traditional: One Kernel</div>
<div class="architecture-layers">
<div class="layer multikernel-layer">
<div class="layer-label">App (userspace)</div>
<div class="layer-features">
<span>syscall / VFS</span>
</div>
</div>
<div class="layer hardware-layer">
<div class="layer-label">Bottom Half (steals app CPU)</div>
<div class="layer-features">
<span>TCP softirq</span>
<span>NIC hardirq</span>
<span>NVMe hardirq</span>
</div>
</div>
</div>
<div class="preview-benefit">All contexts compete for the same cores</div>
</div>
</div>
</div>
</div>
</section>
<!-- Key Components -->
<section id="solution" class="value-section">
<div class="section-container">
<div class="section-header">
<div class="section-badge">
<i data-lucide="cpu"></i>
<span>Key Components</span>
</div>
<h2 class="section-title">The Multikernel System</h2>
<p class="section-subtitle">Three components working together: isolated app-kernels for applications, a shared device-kernel for all I/O, and a lock-free shared memory layer connecting them.</p>
</div>
<div class="technologies-grid">
<div class="technology-card primary">
<div class="tech-icon">
<i data-lucide="monitor"></i>
</div>
<h3 class="tech-title">App-Kernels</h3>
<p class="tech-description">Each application runs in its own Linux kernel on dedicated cores. These kernels contain no device drivers, no interrupt handlers, and no network stack. Practically all compute and memory resources go directly to the application.</p>
</div>
<div class="technology-card primary">
<div class="tech-icon">
<i data-lucide="hard-drive"></i>
</div>
<h3 class="tech-title">Device-Kernel</h3>
<p class="tech-description">All device drivers, interrupt handlers, TCP/IP stack, and I/O processing run in a dedicated device-kernel on its own cores. This kernel serves every app-kernel and has its own independent update and failure domain.</p>
</div>
<div class="technology-card primary">
<div class="tech-icon">
<i data-lucide="database"></i>
</div>
<h3 class="tech-title">DAXFS Shared Memory</h3>
<p class="tech-description">App-kernels and the device-kernel communicate through DAXFS, a filesystem built on shared DRAM with lock-free CAS-based coordination. Zero-copy, no serialization, no network round trips.</p>
</div>
</div>
</div>
</section>
<!-- How It Works -->
<section id="how-it-works" class="how-it-works">
<div class="section-container">
<div class="section-header">
<div class="section-badge">
<i data-lucide="cog"></i>
<span>Under the Hood</span>
</div>
<h2 class="section-title">How It Works</h2>
<p class="section-subtitle">Built entirely on existing Linux infrastructure. No new OS, no custom hypervisor, no compatibility gaps.</p>
</div>
<div class="technologies-grid">
<div class="technology-card">
<div class="tech-icon">
<i data-lucide="play-circle"></i>
</div>
<h3 class="tech-title">Kernel Spawning via Kexec</h3>
<p class="tech-description">New kernel instances launch using Linux's kexec mechanism, extended to boot alongside the running kernel rather than replacing it. Each spawned kernel starts on its assigned CPUs and memory, fully independent.</p>
</div>
<div class="technology-card">
<div class="tech-icon">
<i data-lucide="sliders"></i>
</div>
<h3 class="tech-title">Resource Partitioning</h3>
<p class="tech-description">CPUs, memory, and device queues are assigned to each kernel using standard Linux hotplug interfaces. Resources can be rebalanced between kernels at runtime without rebooting.</p>
</div>
<div class="technology-card">
<div class="tech-icon">
<i data-lucide="hard-drive"></i>
</div>
<h3 class="tech-title">Hardware Queue Isolation</h3>
<p class="tech-description">Modern NICs and NVMe devices expose multiple hardware queues. The device-kernel gets exclusive access to device queues. No software bridge, no SR-IOV. True hardware-level I/O isolation.</p>
</div>
<div class="technology-card">
<div class="tech-icon">
<i data-lucide="box"></i>
</div>
<h3 class="tech-title">Docker Integration</h3>
<p class="tech-description">Spawned kernels boot directly into Docker images using DAXFS to share the container rootfs. No full OS init per instance. Applications run unmodified with standard Linux interfaces.</p>
</div>
</div>
</div>
</section>
<!-- Comparison -->
<section id="comparison" class="value-section">
<div class="section-container">
<div class="section-header">
<h2 class="section-title">Split-Kernel vs. Existing Approaches</h2>
<p class="section-subtitle">The split-kernel architecture combines the isolation of separate kernels with native hardware performance, without the overhead of virtualization or the limitations of kernel tuning.</p>
</div>
<div class="diagram-container">
<img src="assets/images/comparison-architecture-diagrams.svg" alt="Comparison of VM, Container, and Multikernel architectures" class="architecture-diagram">
</div>
<div class="comparison-table">
<table>
<thead>
<tr>
<th>Capability</th>
<th>Containers</th>
<th>VMs</th>
<th>Multikernel</th>
</tr>
</thead>
<tbody>
<tr>
<td>Isolation</td>
<td>Shared kernel</td>
<td>Full (hypervisor)</td>
<td>Separate kernels</td>
</tr>
<tr>
<td>Performance overhead</td>
<td>Minimal</td>
<td>5-20%</td>
<td>None</td>
</tr>
<tr>
<td>Kernel customization</td>
<td>No</td>
<td>Yes</td>
<td>Yes, per workload</td>
</tr>
<tr>
<td>Dynamic resource allocation</td>
<td>Yes</td>
<td>Limited</td>
<td>Yes (CPU/memory hotplug)</td>
</tr>
<tr>
<td>Zero-downtime kernel updates</td>
<td>No</td>
<td>With orchestration</td>
<td>Yes</td>
</tr>
<tr>
<td>Attack surface per workload</td>
<td>Full kernel</td>
<td>Reduced</td>
<td>Minimal (stripped kernel)</td>
</tr>
<tr>
<td>Noisy neighbor effect</td>
<td>Yes</td>
<td>Reduced</td>
<td>Eliminated</td>
</tr>
<tr>
<td>Works inside cloud VMs</td>
<td>Yes</td>
<td>Requires nested virt</td>
<td>Yes</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<!-- Use Cases -->
<section id="use-cases" class="how-it-works">
<div class="section-container">
<div class="section-header">
<div class="section-badge">
<i data-lucide="target"></i>
<span>Applications</span>
</div>
<h2 class="section-title">Use Cases</h2>
<p class="section-subtitle">The split-kernel architecture enables workloads that require strong isolation, predictable performance, or independent kernel lifecycle management.</p>
</div>
<div class="features-grid">
<div class="feature-card">
<div class="feature-icon">
<i data-lucide="bar-chart"></i>
</div>
<h3 class="feature-title">Latency-Sensitive Workloads</h3>
<p class="feature-description">Trading systems, real-time analytics, and game servers where interrupt jitter affects outcomes. App-kernel cores see zero interrupts by design.</p>
</div>
<div class="feature-card">
<div class="feature-icon">
<i data-lucide="brain"></i>
</div>
<h3 class="feature-title">AI Agent Sandboxing</h3>
<p class="feature-description">Each AI agent runs in its own app-kernel with full GPU access and kernel-level isolation. No virtualization layer between the agent and hardware.</p>
</div>
<div class="feature-card">
<div class="feature-icon">
<i data-lucide="refresh-cw"></i>
</div>
<h3 class="feature-title">Zero-Downtime Updates</h3>
<p class="feature-description">Replace the device-kernel while applications continue running. Roll back a bad driver update without restarting a single workload.</p>
</div>
<div class="feature-card">
<div class="feature-icon">
<i data-lucide="activity"></i>
</div>
<h3 class="feature-title">Fault Tolerance</h3>
<p class="feature-description">A driver crash in the device-kernel does not affect application kernels. The device-kernel recovers independently while applications continue running.</p>
</div>
<div class="feature-card">
<div class="feature-icon">
<i data-lucide="server"></i>
</div>
<h3 class="feature-title">Mixed Workload Isolation</h3>
<p class="feature-description">Run databases, web servers, and ML training on the same machine. Each workload gets its own kernel with dedicated resources and no noisy neighbors.</p>
</div>
<div class="feature-card">
<div class="feature-icon">
<i data-lucide="database"></i>
</div>
<h3 class="feature-title">CXL Memory Sharing</h3>
<p class="feature-description">Share data across kernel instances or CXL-connected hosts through DAXFS with lock-free concurrent access and a shared page cache.</p>
</div>
</div>
</div>
</section>
</main>