KernelGraph: Understanding the kernel in a graph

Jianjun Shi, Weixing Ji*, Jingjing Zhang, Zhiwei Gao, Yizhuo Wang, Feng Shi

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

1 Citation (Scopus)

Abstract

The Linux kernel has grown to 20 million lines of code, which have been contributed by almost 14,000 programmers. The complexity of the Linux kernel challenges the kernel maintenance and makes comprehending the kernel more difficult for developers learning the kernel. Automated tool support is crucial for comprehending such a large-scale program involving a high volume of code. In this article, we present KernelGraph, which enhances understanding of the Linux kernel by providing a visual representation of kernel internals. KernelGraph resembles online map systems and facilitates kernel code navigation in an intuitive and interactive way. We describe the key techniques used in KernelGraph to process the vast amount of information in the kernel codebase quickly. We also implemented two applications built atop KernelGraph to enhance kernel comprehension. KernelGraph was presented to 30 participants, who were asked several questions about their kernel comprehension in a controlled study. Our experimental results show that, compared with other source code comprehension tools, KernelGraph improves kernel comprehension by enabling people to visually browse the kernel code and by providing an effective means for exploring the kernel structure. The ability to switch seamlessly between high-level views and source code significantly reduces the gap between source code and high-level mental representation. KernelGraph can be easily extended to support visualizations of other large-scale codebases.

Original languageEnglish
Pages (from-to)283-296
Number of pages14
JournalInformation Visualization
Volume18
Issue number3
DOIs
Publication statusPublished - 1 Jul 2019

Keywords

  • Linux kernel
  • code visualization
  • program comprehension

Fingerprint

Dive into the research topics of 'KernelGraph: Understanding the kernel in a graph'. Together they form a unique fingerprint.

Cite this