Keith Parkins
csc 573
 

Motivation

Various distributions of free versions of UNIX  have had difficulty in getting stable and solid SMP support. One interesting method of improving communication has been introduced with the implementation of Chuck Cranor's UVM (u virtual memory) on NetBSD. This system is able to share almost any page in memory which has lead to an increase in IPC performance. I am interested in benchmarking  memory management on Linux and NetBSD to see if UVM could be used to improve memory management and IPC on Linux.
 

Method

I plan on using stripped down versions of the kernel on both OS's. I am using a Dell Inspiron 3000 and running the RedHat 6.1 distribution and the NetBSD 1.4 distribution. I plan on using one of the experimental 2.3.x kernels on the Linux side to insure that I am capturing a snapshot of the kernel's latest memory management scheme. I am using the generic 1.4 NetBSD kernel.

I am going to use the test programs that were used in the "The Design and Implementation of the UVM Virtual Memory System" paper. I am also going to run some of the benchmarking tools that are included with NetBSD and search for some within the Linux community.
 

Implementation

Depending on the results I get from benchmarking and from examining the code, I will attempt to add some of UVM's features into the Linux kernel. Unfortunately, memory management seems to be an area that Linus Torvalds is very conservative with. Implementing UVM on NetBSD called for a massive rewrite of high level paging functions, dumping data structures such as object chains, and rewriting the low-level hardware specific functions.

Problems with implementation are the fact that Linux does not safely leave things like TLB flushing in the hardware depenedent code, but leaves it up to the higher level code. This is due to Linux's insistance on a three-level MMU machine independant model. This also causes problems because Linux has to keep page tables in memory (it can't relay on a pmap hardware layer to regenerate the page table). This memory can neither be freed gracefully nor paged out as Windows NT does.

Because of these and other massive differences, I am not certain how difficult it would be to add a feature such as shared anonymous memory or page loanout.