Messages in this thread | | | Date | Tue, 5 Feb 2008 19:08:02 +0100 | From | Andrea Arcangeli <> | Subject | Re: [PATCH] mmu notifiers #v5 |
| |
On Mon, Feb 04, 2008 at 10:11:24PM -0800, Christoph Lameter wrote: > Zero problems only if you find having a single callout for every page > acceptable. So the invalidate_range in your patch is only working
invalidate_pages is only a further optimization that was strightforward in some places where the page isn't freed but only the pte modified.
> sometimes. And even if it works then it has to be used on 2M range. Seems > to be a bit fragile and needlessly complex.
The patch as a whole isn't fragile nor complex. Pretending to use invalidate_pages anywhere would be complex (and in turn more fragile than my current patch, complexity brings fragility).
Overall you can only argue against performance issues (my patch is simpler for GRU/KVM, and it sure isn't fragile, quite the opposite, given I never allow a coherency-loss between two threads that will read/write to two different physical pages for the same virtual adddress in remap_file_pages).
In performance terms with your patch before GRU can run follow_page it has to take a mm-wide global mutex where each thread in all cpus will have to take it. That will trash on >4-way when the tlb misses start to occour. There's nothing like that in my patch. Your approach will micro-optimize certain large pte-mangling calls, or do_exit, but those aren't interesting paths nor for GRU nor for KVM. You're optimizing for the slow path, and making the fast path slower.
> "conversion of some page in pages"? A proposal to defer the freeing of the > pages until after the pte_unlock?
There can be many tricks to optimize page in pages, but again munmap and do_exit aren't the interesting path to optimzie, nor for GRU nor for KVM so it doesn't matter right now.
| |