Back to the top page

StaticTLB experimental kernel for BG/L I/O node

StaticTLB experimental kernel provides a special memory region that is covered by static(or pinned down) TLB entries. No TLB miss occur on the special memory region. With the following pre-compiled kernel, a 256MB static TLB memory area is available and its virtual address range is always [0xa0000000,0xb0000000). NOTE: the current implementation only works on 512MB main memory I/O node.

zoid.patch is an example usage of the static tlb memory region. Linux kernel doesn't manage this region, so you have to manage it yourself. There is also no permission control, no mmu context control on this memory area. It is naturally a shared resource. All processes/threads (actually even kernel) can access it with the same address range. If two or more processs/threads need to share the memory area, you need to protect it with semaphore or mutex.

Performance Improvement?

The statictlb memory region definitely helps memory operation. see

Applying to zoid may show a small improvement on I/O operation. 2 or 3 % improvement on File I/O. Unfortunatelly it seems it doesn't help the socket performance. The NetPIPE benchmark didn't show any performance improvement, it was the same performance with on regular page.

BTW, benchmark codes that access /dev/zero in order to measure some peformance shows that statictlb memory area is worse than regular 4KB memory area because /dev/zero uses COW for zeroing 4KB memory chunk.

Last modified: Thu Oct 26 09:54:22 CDT 2006