VM Algorithm Improvement: Better Data Structures and Algorithms to Support Large VM Objects.

Objective

For management of resident pages the splay trees are used, which are not suitable for the purpose. The objective is to replace the splay tree with another data-structure such that even ordered traversal is possible. The ordered traversal will allow us to reduce size of structure vm_page.

Plan

To implement the new data structure in user-space first. Test for memory leaks and correctness. Evaluate space and time efficiency.

The new data structure is generalized radix tree. (different number of bits at each level)

Move the code to kernel and run the new data structure parallel to old data structure, test for identical functionality.

Performance evaluation.

TODO

Implement user-mode generalized radix tree.

Test for memory leaks and functional correctness.

Test strategy: Using Valgrind for memory leaks and random add/remove/lookup operations for long time.

Test for different tree configurations.

Integrate the radix tree with kernel code and run in parallel with the existing splay tree, check if the values returned are identical. (*)

Remove the splay tree and measure performance for the new data structure.

UPDATES

The user mode mode implementation is complete and is under testing.

After preliminary testing the code does not show any memory leaks or illegal pointer reference, stress-testing is being carried out.

The code will be checked (along with the test programs) in to perforce once the unit testing is over. (Expected date: 17th June)

June 18th : The unit testing is over and the code is checked in. Investigating issues related to VM integration.

The memory for nodes will be reserved at the boot time, as the insert can not block or fail if malloc fails.

Initially the tree will function in parallel with the splay tree and eventually it will be removed.

The new files are added in the kernel configuration and are compiled with the kernel. Once the function calls are made from appropriate places the code will be checked in.