Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1229916
| From | Ingo Molnar <mingo@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 00/11] x86/mm: Implement lockless pgd_alloc()/pgd_free() |
| Date | 2015-09-22 08:30 +0200 |
| Message-ID | <qbpfr-5Ff-1@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
So this is the somewhat belated latest iteration of the series. I (think I) fixed all correctness bugs in the code pointed out by Oleg. The task list walk is still 'dumb', using for_each_process(), as none of the call sites are performance critical. Oleg, can you see any problems with this code? Background: Waiman Long reported 'pgd_lock' contention on high CPU count systems and proposed moving pgd_lock on a separate cacheline to eliminate false sharing and to reduce some of the lock bouncing overhead. I think we can do much better: this series eliminates the pgd_list and makes pgd_alloc()/pgd_free() lockless. Now the lockless initialization of the PGD has a few preconditions, which the initial part of the series implements: - no PGD clearing is allowed, only additions. This makes sense as a single PGD entry covers 512 GB of RAM so the 4K overhead per 0.5TB of RAM mapped is miniscule. The patches after that convert existing pgd_list users to walk the task list. PGD locking is kept intact: coherency guarantees between the CPA, vmalloc, hotplug, etc. code are unchanged. The final patches eliminate the pgd_list and thus make pgd_alloc()/pgd_free() lockless. The patches have been boot tested on 64-bit and 32-bit x86 systems. Architectures not making use of the new facility are unaffected. Thanks, Ingo === Ingo Molnar (11): x86/mm/pat: Don't free PGD entries on memory unmap x86/mm/hotplug: Remove pgd_list use from the memory hotplug code x86/mm/hotplug: Don't remove PGD entries in remove_pagetable() x86/mm/hotplug: Simplify sync_global_pgds() mm: Introduce arch_pgd_init_late() x86/virt/guest/xen: Remove use of pgd_list from the Xen guest code x86/mm: Remove pgd_list use from vmalloc_sync_all() x86/mm/pat/32: Remove pgd_list use from the PAT code x86/mm: Make pgd_alloc()/pgd_free() lockless x86/mm: Remove pgd_list leftovers x86/mm: Simplify pgd_alloc() arch/Kconfig | 9 +++ arch/x86/Kconfig | 1 + arch/x86/include/asm/pgtable.h | 3 - arch/x86/include/asm/pgtable_64.h | 3 +- arch/x86/mm/fault.c | 32 +++++++--- arch/x86/mm/init_64.c | 92 ++++++++++++-------------- arch/x86/mm/pageattr.c | 40 ++++++------ arch/x86/mm/pgtable.c | 131 +++++++++++++++++++------------------- arch/x86/xen/mmu.c | 45 +++++++++++-- fs/exec.c | 3 + include/linux/mm.h | 6 ++ kernel/fork.c | 16 +++++ 12 files changed, 227 insertions(+), 154 deletions(-) -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[PATCH 00/11] x86/mm: Implement lockless pgd_alloc()/pgd_free() Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
[PATCH 07/11] x86/mm: Remove pgd_list use from vmalloc_sync_all() Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
Re: [PATCH 07/11] x86/mm: Remove pgd_list use from vmalloc_sync_all() Linus Torvalds <torvalds@linux-foundation.org> - 2015-09-22 20:00 +0200
[PATCH 06/11] x86/virt/guest/xen: Remove use of pgd_list from the Xen guest code Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
Re: [PATCH 06/11] x86/virt/guest/xen: Remove use of pgd_list from the Xen guest code Linus Torvalds <torvalds@linux-foundation.org> - 2015-09-22 20:00 +0200
Re: [PATCH 06/11] x86/virt/guest/xen: Remove use of pgd_list from the Xen guest code Ingo Molnar <mingo@kernel.org> - 2015-09-29 10:50 +0200
[PATCH 10/11] x86/mm: Remove pgd_list leftovers Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
[PATCH 08/11] x86/mm/pat/32: Remove pgd_list use from the PAT code Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
[PATCH 09/11] x86/mm: Make pgd_alloc()/pgd_free() lockless Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
[PATCH 02/11] x86/mm/hotplug: Remove pgd_list use from the memory hotplug code Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
Re: [PATCH 02/11] x86/mm/hotplug: Remove pgd_list use from the memory hotplug code Linus Torvalds <torvalds@linux-foundation.org> - 2015-09-22 19:50 +0200
Re: [PATCH 02/11] x86/mm/hotplug: Remove pgd_list use from the memory hotplug code Oleg Nesterov <oleg@redhat.com> - 2015-09-23 13:50 +0200
Re: [PATCH 02/11] x86/mm/hotplug: Remove pgd_list use from the memory hotplug code Ingo Molnar <mingo@kernel.org> - 2015-09-29 10:50 +0200
Re: [PATCH 02/11] x86/mm/hotplug: Remove pgd_list use from the memory hotplug code Oleg Nesterov <oleg@redhat.com> - 2015-09-29 19:00 +0200
[PATCH 03/11] x86/mm/hotplug: Don't remove PGD entries in remove_pagetable() Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
[PATCH 01/11] x86/mm/pat: Don't free PGD entries on memory unmap Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
Re: [PATCH 01/11] x86/mm/pat: Don't free PGD entries on memory unmap Linus Torvalds <torvalds@linux-foundation.org> - 2015-09-22 19:50 +0200
Re: [PATCH 01/11] x86/mm/pat: Don't free PGD entries on memory unmap Andy Lutomirski <luto@amacapital.net> - 2015-09-22 20:10 +0200
[PATCH 04/11] x86/mm/hotplug: Simplify sync_global_pgds() Ingo Molnar <mingo@kernel.org> - 2015-09-22 08:30 +0200
csiph-web