Adam's incoherent ramblings
This purpose of this page it mainly to have a personal braindump of issues relating to my GuardedPageTable (GPT) work and Gelato's PageTableInterface (PTI) work in Linux.
Questions regarding the PTI
- What are the performance critical code paths, in particular which iterators are perf critical?
copy_page_range, unmap_page_range and tear_down_page_tables are the immediate targets (PaulDavies)
PTI Notes
- The 'gate area' is used for fast syscalls on IA64 and i386 architectures.
Other architectures? (PeterChubb: Yes, X86_64 and PPC also use a vdso)
The reason functions that receive a pointer to both the current pte (page table entry) and pmd (page middle directory) recalculated the pte pointer after dropping the page table lock is that pte arrays can live in highmem and the pointer may no longer be valid, recalculating it via pte_offset_map() forces residence of that pte array. In the latest kernels this stage also fetches the lock for the pte array by calling pte_offset_map_lock() instead.
Selling the PTI
Given that acceptance of the PTI into the kernel mainline is a major hurdle, why not push it in different directions? One idea would be to generate some analysis tools to show the performance/memory usage of a page table under the PTI and to then make the code avaliable for things like advanced assignments in the main OS course, or as a Linux hacking challange. This could be a way of getting exposure as well as getting more eyes looking at it.
Long format VHPT notes
The LVHPTpatch grabs the GR argument from the page table entry and builds the ITIR argument.
For the GPT we can store the ps field of the ITIR argument in the page table (the GR argument) in the ignored bits.
See TLBMissFlowchart for information regarding the calling of IA64 exception handlings for virtual memory faults.
References
LeeSchermerhorn's tools for testing Linux VM performance, etc (see Gelato email).
- linux-mm patches for shared page table work (see linux-mm email) might provide a basis for future sharing work for PTI and GPT.
