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.
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.
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.