Comp 430 Final Project: Tracking Page Faults


Introduction

The goal of this project is to modify the Linux kernel so that it maintains a per-process record of page faults. You should record the list of addresses that result in page faults, and those addresses should be made available through appropriate entries in the proc/ file system. This information could have several uses. It could be used for application tuning by giving insight into memory access patterns of individual programs. It could also be useful information for profiling or debugging the Linux memory management system itself.

For this project you may work alone or in pairs. The main challenge in this project will not be writing the code. The challenge will be reading the existing code, and doing the research to figure out how the problem can be solved.

One complication you will need to deal with is the fact that there is no upper bound on the number of page faults that a particular process might experience. This causes two different problems. First, it means the data structure that stores addresses must be able to grow. Second, it turns out that smallish fixed sized files are easier to deal with in the proc/ file system than large files. (You can find information on the proc/ file system in Documentation/filesystems/proc.txt and in Chapter 4 of Linux Device Drivers)

With that in mind, it might make sense to start out by setting up a system that only maintains and prints a smallish circular array of addresses. The project has two deadlines. For the first deadline, Wednesday of 9th week, you should submit answers to the following list of questions. These are designed to give you a starting point in thinking through what needs to be done.

Handing In

Your final submission should take the form of a tarred directory as described in HW #1 . That directory should contain the following items:

Grading

Answers to Questions (Due Date 1) 10%
Documentation 15%
Coding Style 15%
Patch Functionality 50%
Test Application and Figure 10%



This page is maintained by Nathan Sprague nsprague{at}kzoo{dot}edu.