Hi,
I and a colleague were making tests in Non-Contiguous Memory Allocator. We
implemented VGNCA, a non-contiguous memory allocator improvement.
In the current non-contiguous memory allocator, each physical page is
allocated by time, through alloc_page() function call. However, each one of
this calls has an associated overhead with enable/disable interrupts.
In VGNCA, the main idea is enable/disable interrupts only one time, reducing
this overhead. Also, VGNCA allocation/deallocation functions are a little
more simple, because elimination of unnecessary test conditions in size
allocation.
Our patch is intended to be a test to check if this could bring enough
benefits to deserve a more careful implementation. We also included some code
to benchmark allocations and deallocations, using the RDTSC instruction.
We are sending:
- Patch against 2.6.0-test11 with these modifications.
- Graphics with performance tests:
--- small-allocations.eps/small-frees.eps --> 1-128 kB
--- large-allocations.eps/large-frees.eps --> 1-64 MB
LMB, Ruthiano.
vgnca-test11.patch
Description: Text Data
large-frees.eps
Description: image/eps
large-allocations.eps
Description: image/eps
small-allocations.eps
Description: image/eps
small-frees.eps
Description: image/eps
|