Trustworthy Systems

IDE Performance

The following plot shows the performance of our IDE disk driver compared to the native Linux device driver. This micro-benchmark involved synchronously reading a contiguous 64MB region one block at a time. The X-axis varies the block size of from 1KB up to 1MB. The lines from the bottom-left corner to the top-right corner show the achieved throughput, while the lines from the top-left to bottom-right show the CPU utilisation. Linux kernel refers to our driver in a normal Linux configuration (in-kernel driver), while Linux user refers to our driver running at user-level in Linux.

Comparative disk driver performance

The figure shows that our driver is at least as good as the in-kernel Linux driver. The important result is that running the driver at user-level leads to no throughput degradation, and only a modest increase in system time overhead (at worst 17% at the smallest block size, much less at realistic transfer sizes).

GigaBit Ethernet Performance

Initial benchmarking of Gigabit Ethernet performance is also encouraging. Here we tested the throughput and CPU utilisation of a machine performing UDP echo. Here the IP stack remains in-kernel, with our Intel E1000 driver running at user-level. The user-level driver receives interrupt events from the Linux kernel, and is responsible for passing network packets between the kernel and the network controller. The UDP echo service runs as a separate user-level application. As before, Linux kernel refers to our driver in a normal Linux configuration (in-kernel driver), while Linux user refers to our driver running at user-level in Linux.

Comparative ethernet performance

The benchmark involves sending a UDP packet stream to the UDP echo application running on the machine under test. We vary the applied load (input UDP stream rate) to see how the input rate affects the performance. The x-axis shows the applied load. The upper pair of lines show almost identical throughput (right axis) up until approximately 750 Mb/s, after which the user-level driver achieves 93% of the throughput of the in-kernel driver.

The lower pair of lines show CPU utilisation (left axis) at the various applied loads. Surprisingly, the largest absolute difference in CPU utilisation is 4% of overall CPU capacity at a load of 720 Mb/s. This represents a very modest 7% increase in CPU load.

Further details can be found in our related publications.