Skip to content

abstract pagetable locking and pte updates

Nick Piggin linux-mm 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest7 patches 12 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/7abstract pagetable locking and pte updatesmm/mmap.c+38 -110 replies
2/7abstract pagetable locking and pte updatesinclude/linux/mm.h mm/memory.c mm/mmap.c+38 -320 replies
3/7abstract pagetable locking and pte updatesmm/memory.c+7 -300 replies
4/7abstract pagetable locking and pte updatesarch/i386/kernel/vm86.c arch/i386/mm/hugetlbpage.c arch/i386/mm/ioremap.c +17 more+1104 -4990 replies
5/7abstract pagetable locking and pte updatesarch/i386/Kconfig arch/i386/kernel/cpu/intel.c include/asm-i386/system.h+131 -60 replies
6/7abstract pagetable locking and pte updatesinclude/asm-i386/pgtable-2level.h include/asm-i386/pgtable-3level.h include/asm-i386/pgtable.h+58 -140 replies
7/7abstract pagetable locking and pte updatesarch/x86_64/mm/ioremap.c include/asm-x86_64/pgtable.h+38 -50 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/7] abstract pagetable locking and pte updates

Hello,

Following are patches that abstract page table operations to allow lockless implementations by using cmpxchg or per-pte locks.

The work is inspired by and uses parts of Christoph Lameter's pte cmpxchg work. It is not a clearly superior approach, but an alternative way to tackle the problem.

It is a lot more intrusive, but it has also gone a bit further in reducing page_table_lock usage. It is also designed with pte locking in mind, which may be needed for PPC64, and will allow 100% removal of the page table lock.

The API is a transactional one, which fitted the problem quite well in my mind. Please read comments for patch 4/7 for a more detailed overview.

It is stable so far on i386 and x86-64. Page fault performance on a quad opteron is up maybe 150%. Oh and it also rids page_referenced_one of the page_table_lock, which could be a win in some situations.

Known issues: Hugepages, nonlinear pages haven't been looked at and are quite surely broken. TLB flushing (gather/finish) runs without the page table lock, which will break at least SPARC64. Additional atomic ops in copy_page_range slow down lmbench fork by 7%.

Comments and discussion about this and/or Christoph's patches welcome. They apply to 2.6.10-rc1-bk7

Thanks,
Nick

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>