28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

234<br />

behavior is required by <strong>the</strong> active close <strong>of</strong> <strong>the</strong> TCP state machine. Having 10k<br />

connections waiting forced us to wait for <strong>the</strong> timeout between running <strong>the</strong> tests for<br />

<strong>the</strong> host kernel networking stack. In contrast, we could kill <strong>the</strong> process hosting <strong>the</strong><br />

rump kernel networking stack <strong>and</strong> start out with a new IP <strong>and</strong> a clean state in a<br />

fraction <strong>of</strong> a second. While using <strong>the</strong> host TCP/IP stack was 0.03 times faster than<br />

using a TCP/IP stack in <strong>the</strong> rump kernel, executing <strong>the</strong> benchmarks on <strong>the</strong> host<br />

stack took over 10 times as long in wall time.<br />

4.7 Summary<br />

We evaluated <strong>the</strong> anykernel architecture <strong>and</strong> rump kernels in numerous different<br />

ways, both with syn<strong>the</strong>tic benchmarks <strong>and</strong> analyzing real world data from NetBSD<br />

collected between 2007 <strong>and</strong> 2011.<br />

We found that maintaining <strong>the</strong> anykernel architecture <strong>and</strong> rump kernel support<br />

in <strong>the</strong> codebase adds minor maintenance effort. We found that less than 0.2% <strong>of</strong><br />

repository commits to <strong>the</strong> kernel source tree caused rump kernel build problems. We<br />

added a special rumptest build comm<strong>and</strong>, which exploits <strong>the</strong> rump kernel symbol<br />

closure to test linking. <strong>The</strong> comm<strong>and</strong> made it 30 times faster to buildtest rump<br />

kernel support.<br />

<strong>The</strong> use <strong>of</strong> rump kernels as an application library was evaluated with file system related<br />

applications <strong>and</strong> was found to be a working approach. <strong>The</strong> makefs application<br />

for NetBSD was reimplemented as a local rump kernel client, <strong>and</strong> <strong>the</strong> new version<br />

was implemented in under 1/17th <strong>of</strong> <strong>the</strong> time taken for <strong>the</strong> original. This speedup<br />

was due to <strong>the</strong> fact that <strong>the</strong> existing kernel file system driver could be used directly.<br />

<strong>The</strong> new version also supports four additional file systems because driver support is<br />

available without fur<strong>the</strong>r effort.

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

Saved successfully!

Ooh no, something went wrong!