Check out the new USENIX Web site. [Next] [Up] [Previous]
Next: Denali at Scale Up: Scale, Performance, and Simplicity Previous: Simplified Virtual Ethernet

Source Code Complexity

As a final measure of the impact of Denali's virtual architecture, we quantify the size of the Denali source tree relative to Linux. This comparison therefore gives an indication of how complex it is to implement an isolation kernel that exposes Denali's architecture, as compared to the complexity of implementing an OS that exports high-level abstractions. Code size is important because it serves as an indication of the size of the trusted computing base, and it also impacts how easily the system can be maintained, modified, and debugged over time.

We compared Denali against Linux 2.4.16. For fairness of comparison, we choose a subset of Linux files that comprise a ``bare-bones'' kernel: no module support, no SMP support, no power management, only the ext2 file system, limited driver support, and so on. We use semicolon count as the metric of source lines, to account for different coding conventions.

 

Figure 6: Source code complexity: number of source lines in Linux 2.4.16 and Denali. Denali is roughly half the size of Linux in total source lines. Denali's core kernel (without device drivers and platform-dependent code) is an order-of-magnitude smaller than Linux.

 

Denali contains 26,634 source lines, while Linux has 66,326 source lines (Figure 6a). Only a small fraction (18%) of the Denali source is consumed by the ``core kernel''; the remainder is dedicated to device drivers and architecture-dependent routines. Although drivers are known to be more buggy than core kernel code [8], the drivers used by Denali and ``bare-bones'' Linux consist of mature source code that has not changed substantially over time, e.g., the IDE driver, terminal support, and PCI bus probing.

In Figure 6b, we present a breakdown of the core kernel sizes of Denali and Linux. The Linux core kernel is an order-of-magnitude larger than Denali. The majority of the difference is attributable to Linux's implementation of stable storage (the ext2 file system) and networking (TCP/IP) abstractions. By deferring the implementation of complex abstractions to guest operating systems, Denali realizes a substantial reduction in core kernel source tree size.


[Next] [Up] [Previous]
Next: Denali at Scale Up: Scale, Performance, and Simplicity Previous: Simplified Virtual Ethernet
Andrew Whitaker 2002-10-07