Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1709348
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [v6 00/15] complete deferred page initialization |
| Date | 2017-08-11 10:00 +0200 |
| Message-ID | <udd1n-LV-9@gated-at.bofh.it> (permalink) |
| References | <ubX8m-5vB-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
[I am sorry I didn't get to your previous versions] On Mon 07-08-17 16:38:34, Pavel Tatashin wrote: [...] > SMP machines can benefit from the DEFERRED_STRUCT_PAGE_INIT config option, > which defers initializing struct pages until all cpus have been started so > it can be done in parallel. > > However, this feature is sub-optimal, because the deferred page > initialization code expects that the struct pages have already been zeroed, > and the zeroing is done early in boot with a single thread only. Also, we > access that memory and set flags before struct pages are initialized. All > of this is fixed in this patchset. > > In this work we do the following: > - Never read access struct page until it was initialized How is this enforced? What about pfn walkers? E.g. page_ext initialization code (page owner in particular) > - Never set any fields in struct pages before they are initialized > - Zero struct page at the beginning of struct page initialization Please give us a more highlevel description of how your reimplementation works and how is the patchset organized. I will go through those patches but it is always good to give an overview in the cover letter to make the review easier. > Performance improvements on x86 machine with 8 nodes: > Intel(R) Xeon(R) CPU E7-8895 v3 @ 2.60GHz > > Single threaded struct page init: 7.6s/T improvement > Deferred struct page init: 10.2s/T improvement What are before and after numbers and how have you measured them. > > Pavel Tatashin (15): > x86/mm: reserve only exiting low pages > x86/mm: setting fields in deferred pages > sparc64/mm: setting fields in deferred pages > mm: discard memblock data later > mm: don't accessed uninitialized struct pages > sparc64: simplify vmemmap_populate > mm: defining memblock_virt_alloc_try_nid_raw > mm: zero struct pages during initialization > sparc64: optimized struct page zeroing > x86/kasan: explicitly zero kasan shadow memory > arm64/kasan: explicitly zero kasan shadow memory > mm: explicitly zero pagetable memory > mm: stop zeroing memory during allocation in vmemmap > mm: optimize early system hash allocations > mm: debug for raw alloctor > > arch/arm64/mm/kasan_init.c | 42 ++++++++++ > arch/sparc/include/asm/pgtable_64.h | 30 +++++++ > arch/sparc/mm/init_64.c | 31 +++----- > arch/x86/kernel/setup.c | 5 +- > arch/x86/mm/init_64.c | 9 ++- > arch/x86/mm/kasan_init_64.c | 67 ++++++++++++++++ > include/linux/bootmem.h | 27 +++++++ > include/linux/memblock.h | 9 ++- > include/linux/mm.h | 9 +++ > mm/memblock.c | 152 ++++++++++++++++++++++++++++-------- > mm/nobootmem.c | 16 ---- > mm/page_alloc.c | 31 +++++--- > mm/sparse-vmemmap.c | 10 ++- > mm/sparse.c | 6 +- > 14 files changed, 356 insertions(+), 88 deletions(-) > > -- > 2.14.0 -- Michal Hocko SUSE Labs
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[v6 00/15] complete deferred page initialization Pavel Tatashin <pasha.tatashin@oracle.com> - 2017-08-07 22:50 +0200
[v6 09/15] sparc64: optimized struct page zeroing Pavel Tatashin <pasha.tatashin@oracle.com> - 2017-08-07 22:50 +0200
Re: [v6 09/15] sparc64: optimized struct page zeroing Michal Hocko <mhocko@kernel.org> - 2017-08-11 15:00 +0200
Re: [v6 09/15] sparc64: optimized struct page zeroing Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-11 18:10 +0200
[v6 08/15] mm: zero struct pages during initialization Pavel Tatashin <pasha.tatashin@oracle.com> - 2017-08-07 22:50 +0200
Re: [v6 08/15] mm: zero struct pages during initialization Michal Hocko <mhocko@kernel.org> - 2017-08-11 15:00 +0200
Re: [v6 08/15] mm: zero struct pages during initialization Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-11 18:10 +0200
[v6 07/15] mm: defining memblock_virt_alloc_try_nid_raw Pavel Tatashin <pasha.tatashin@oracle.com> - 2017-08-07 22:50 +0200
Re: [v6 07/15] mm: defining memblock_virt_alloc_try_nid_raw Michal Hocko <mhocko@kernel.org> - 2017-08-11 14:50 +0200
Re: [v6 07/15] mm: defining memblock_virt_alloc_try_nid_raw Michal Hocko <mhocko@kernel.org> - 2017-08-11 18:10 +0200
Re: [v6 07/15] mm: defining memblock_virt_alloc_try_nid_raw Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-11 18:30 +0200
Re: [v6 07/15] mm: defining memblock_virt_alloc_try_nid_raw Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-11 18:10 +0200
[v6 10/15] x86/kasan: explicitly zero kasan shadow memory Pavel Tatashin <pasha.tatashin@oracle.com> - 2017-08-07 22:50 +0200
[v6 05/15] mm: don't accessed uninitialized struct pages Pavel Tatashin <pasha.tatashin@oracle.com> - 2017-08-07 22:50 +0200
Re: [v6 05/15] mm: don't accessed uninitialized struct pages Michal Hocko <mhocko@kernel.org> - 2017-08-11 11:40 +0200
Re: [v6 05/15] mm: don't accessed uninitialized struct pages Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-11 18:00 +0200
[v6 11/15] arm64/kasan: explicitly zero kasan shadow memory Pavel Tatashin <pasha.tatashin@oracle.com> - 2017-08-07 22:50 +0200
Re: [v6 11/15] arm64/kasan: explicitly zero kasan shadow memory Will Deacon <will.deacon@arm.com> - 2017-08-08 11:10 +0200
Re: [v6 11/15] arm64/kasan: explicitly zero kasan shadow memory Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-08 14:00 +0200
Re: [v6 11/15] arm64/kasan: explicitly zero kasan shadow memory Will Deacon <will.deacon@arm.com> - 2017-08-08 14:40 +0200
Re: [v6 11/15] arm64/kasan: explicitly zero kasan shadow memory Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-08 15:00 +0200
RE: [v6 11/15] arm64/kasan: explicitly zero kasan shadow memory David Laight <David.Laight@ACULAB.COM> - 2017-08-08 15:20 +0200
Re: [v6 11/15] arm64/kasan: explicitly zero kasan shadow memory Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-08 15:40 +0200
[v6 13/15] mm: stop zeroing memory during allocation in vmemmap Pavel Tatashin <pasha.tatashin@oracle.com> - 2017-08-07 22:50 +0200
Re: [v6 13/15] mm: stop zeroing memory during allocation in vmemmap Michal Hocko <mhocko@kernel.org> - 2017-08-11 15:10 +0200
Re: [v6 13/15] mm: stop zeroing memory during allocation in vmemmap Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-11 18:20 +0200
Re: [v6 00/15] complete deferred page initialization Michal Hocko <mhocko@kernel.org> - 2017-08-11 10:00 +0200
Re: [v6 00/15] complete deferred page initialization Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-11 17:20 +0200
Re: [v6 00/15] complete deferred page initialization Michal Hocko <mhocko@kernel.org> - 2017-08-11 17:30 +0200
csiph-web