Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1636370
| From | "Kirill A. Shutemov" <kirill@shutemov.name> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] mm, sparsemem: break out of loops early |
| Date | 2017-05-05 15:20 +0200 |
| Message-ID | <tDLjj-2bY-3@gated-at.bofh.it> (permalink) |
| References | <tDt33-6JH-15@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Thu, May 04, 2017 at 10:44:34AM -0700, Dave Hansen wrote: > > From: Dave Hansen <dave.hansen@linux.intel.com> > > There are a number of times that we loop over NR_MEM_SECTIONS, > looking for section_present() on each section. But, when we have > very large physical address spaces (large MAX_PHYSMEM_BITS), > NR_MEM_SECTIONS becomes very large, making the loops quite long. > > With MAX_PHYSMEM_BITS=46 and a section size of 128MB, the current > loops are 512k iterations, which we barely notice on modern > hardware. But, raising MAX_PHYSMEM_BITS higher (like we will see > on systems that support 5-level paging) makes this 64x longer and > we start to notice, especially on slower systems like simulators. > A 10-second delay for 512k iterations is annoying. But, a 640- > second delay is crippling. > > This does not help if we have extremely sparse physical address > spaces, but those are quite rare. We expect that most of the > "slow" systems where this matters will also be quite small and > non-sparse. > > To fix this, we track the highest section we've ever encountered. > This lets us know when we will *never* see another > section_present(), and lets us break out of the loops earlier. > > Doing the whole for_each_present_section_nr() macro is probably > overkill, but it will ensure that any future loop iterations that > we grow are more likely to be correct. > > Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> > Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Tested-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> It shaved almost 40 seconds from boot time in qemu with 5-level paging enabled for me :) -- Kirill A. Shutemov
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH] mm, sparsemem: break out of loops early Dave Hansen <dave.hansen@linux.intel.com> - 2017-05-04 19:50 +0200 Re: [PATCH] mm, sparsemem: break out of loops early "Kirill A. Shutemov" <kirill@shutemov.name> - 2017-05-05 15:20 +0200
csiph-web