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.

112<br />

<strong>The</strong> kernel with uniprocessor locking performs 34% better than <strong>the</strong> multiprocessor<br />

version on a uniprocessor rump kernel. This significant difference can be explained<br />

by <strong>the</strong> fact that creating files on memory file systems (rump_sys_open(O_CREAT))<br />

is very much involved with taking <strong>and</strong> releasing locks (such as file descriptor locks,<br />

directory locks, file object locks ...) <strong>and</strong> very little involved with I/O or hypervisor<br />

calls. To verify our results, we examined <strong>the</strong> number <strong>of</strong> mutex locks <strong>and</strong><br />

reader/writer locks <strong>and</strong> we found out <strong>the</strong>y are taken 5,438,997 <strong>and</strong> 1,393,596 times,<br />

respectively. This measurement implies <strong>the</strong> spinlock/release cycle fastpath in <strong>the</strong><br />

100ns range, which is what we would expect from a Core2 CPU on which <strong>the</strong> test<br />

wasrun. <strong>The</strong>MT4 case is slower than MT 2, because <strong>the</strong> test host has only two<br />

physical cores, <strong>and</strong> four threads need to compete for <strong>the</strong> same physical cores.<br />

<strong>The</strong> multiprocessor version where <strong>the</strong> number <strong>of</strong> threads <strong>and</strong> virtual CPUs matches<br />

<strong>the</strong> host CPU allocation wins in wall time. However, if it is possible to distribute<br />

work in single processor kernels on all host CPUs, <strong>the</strong>y will win in total performance<br />

due to IPC overhead being smaller than memory bus locking overhead [12].<br />

3.6 Application Interfaces to <strong>the</strong> <strong>Rump</strong> Kernel<br />

Application interfaces are used by clients to request services from <strong>the</strong> rump kernel.<br />

Having <strong>the</strong> interfaces provided as part <strong>of</strong> <strong>the</strong> rump kernel framework has two purposes:<br />

1) it provides a C level prototype for <strong>the</strong> client 2) it wraps execution around<br />

<strong>the</strong> rump kernel entry <strong>and</strong> exit points, i.e. thread context management <strong>and</strong> rump<br />

kernel virtual CPU scheduling.<br />

<strong>The</strong> set <strong>of</strong> available interfaces depends on <strong>the</strong> type <strong>of</strong> <strong>the</strong> client. Since <strong>the</strong> rump<br />

kernel provides a security model for remote clients, <strong>the</strong>y are restricted to <strong>the</strong> system<br />

call interface — <strong>the</strong> system call interface readily checks <strong>the</strong> appropriate permissions<br />

<strong>of</strong> a caller. A local client <strong>and</strong> a microkernel server’s local client are free to call

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

Saved successfully!

Ooh no, something went wrong!