28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

182<br />

Anecdotal analysis<br />

For several weeks <strong>the</strong> author did his day-to-day web browsing with Firefox acting as<br />

a remote client for a rump kernel TCP/IP stack. <strong>The</strong>re was no human-perceivable<br />

difference between <strong>the</strong> performance <strong>of</strong> a rump networking stack <strong>and</strong> <strong>the</strong> host networking<br />

stack, ei<strong>the</strong>r in bulk downloads <strong>of</strong> speeds up to 10Mbps, flash content or<br />

interactive page loads. <strong>The</strong> only human-perceivable difference was <strong>the</strong> ability to reboot<br />

<strong>the</strong> TCP/IP stack from under <strong>the</strong> browser without having to close <strong>the</strong> browser<br />

first.<br />

Microbenchmarks show that remote system calls are orders <strong>of</strong> magnitude slower than<br />

local system calls especially due to copyin/out I/O. However, this“macrobenchmark”<br />

suggests that o<strong>the</strong>rs factors in real application hugely mitigate this performance difference.<br />

We conclude that without a specific application use case any optimizations<br />

are premature. In <strong>the</strong> event <strong>of</strong> such use cases emerging, optimizations know from<br />

literature [14, 63] may be attempted.<br />

3.13 Summary<br />

We began this chapter by describing <strong>the</strong> cornerstone techniques for how to convert<br />

an existing monolithic kernel codebase into an anykernel. To retain <strong>the</strong> existing<br />

properties <strong>of</strong> <strong>the</strong> monolithic kernel, we did not introduce any new technologies,<br />

<strong>and</strong> adjusted <strong>the</strong> codebase using <strong>the</strong> following techniques: code moving, function<br />

pointers <strong>and</strong> weak symbols. <strong>The</strong>se techniques were enough to convert <strong>the</strong> NetBSD<br />

kernel into an anykernel with an independent base <strong>and</strong> orthogonal factions.<br />

We went over <strong>the</strong> various rump kernel implementation aspects such as implicit thread<br />

creation <strong>and</strong> <strong>the</strong> CPU scheduler.<br />

After that, we studied <strong>the</strong> effects that feature

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!