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.

232<br />

<strong>The</strong> results are presented in Figure 4.19. <strong>Rump</strong> kernels perform second best in <strong>the</strong><br />

test after User Mode Linux. However, <strong>the</strong> figures are not directly comparable due<br />

to different hosts.<br />

All virtualization technologies perform significantly worse than <strong>the</strong> native case. This<br />

performance drop is because pinging a local address allows <strong>the</strong> system to route <strong>the</strong><br />

packet through <strong>the</strong> loopback address. Since a virtualized OS does not have a local<br />

address configured on <strong>the</strong> host, <strong>the</strong> packet must be transmitted to <strong>the</strong> virtual OS<br />

instance <strong>and</strong> back.<br />

4.6.7 Web Servers<br />

A web server performance test provides a macro benchmark <strong>of</strong> <strong>the</strong> performance <strong>of</strong><br />

<strong>the</strong> TCP/IP stack in a rump kernel. We tested by adapting <strong>the</strong> thttpd [7] web<br />

server as a local client for a rump kernel. We used ApacheBench to measure <strong>the</strong><br />

total execution time for 10,000 requests <strong>of</strong> an 80 byte root document on <strong>the</strong> web<br />

server. ApacheBench is always running against <strong>the</strong> host kernel TCP/IP stack, while<br />

<strong>the</strong> web server was run both against <strong>the</strong> host stack <strong>and</strong> <strong>the</strong> virtual stack. <strong>The</strong> rump<br />

kernel uses <strong>the</strong> virt interface, so as to access <strong>the</strong> host network. <strong>The</strong> results are<br />

displayed in Figure 4.20.<br />

With concurrency <strong>of</strong> 4 <strong>and</strong> above, <strong>the</strong> difference is about 0.1s in total time. <strong>The</strong><br />

figure translates to a 0.01ms (3%) difference per request. We attribute this difference<br />

to <strong>the</strong> fact that in addition to <strong>the</strong> normal interface path, <strong>the</strong> rump kernel setup must<br />

deliver packets through <strong>the</strong> tap <strong>and</strong> bridge drivers. We did not attempt to optimize<br />

<strong>the</strong> host for E<strong>the</strong>rnet access to be available from userspace more directly.<br />

While <strong>the</strong> above is most likely an obvious result, <strong>the</strong>re are more delicate implications.<br />

Running ApacheBench put 10,000 connections in TIME_WAIT on <strong>the</strong> server. This

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

Saved successfully!

Ooh no, something went wrong!