From: Alexander Duyck <email@example.com> To: Michal Hocko <firstname.lastname@example.org> Cc: email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com Subject: Re: [mm PATCH v3 3/6] mm: Use memblock/zone specific iterator for handling deferred page init Date: Wed, 17 Oct 2018 08:17:05 -0700 [thread overview] Message-ID: <firstname.lastname@example.org> (raw) In-Reply-To: <20181017091154.GK18839@dhcp22.suse.cz> On 10/17/2018 2:11 AM, Michal Hocko wrote: > On Mon 15-10-18 13:27:09, Alexander Duyck wrote: >> This patch introduces a new iterator for_each_free_mem_pfn_range_in_zone. >> >> This iterator will take care of making sure a given memory range provided >> is in fact contained within a zone. It takes are of all the bounds checking >> we were doing in deferred_grow_zone, and deferred_init_memmap. In addition >> it should help to speed up the search a bit by iterating until the end of a >> range is greater than the start of the zone pfn range, and will exit >> completely if the start is beyond the end of the zone. >> >> This patch adds yet another iterator called >> for_each_free_mem_range_in_zone_from and then uses it to support >> initializing and freeing pages in groups no larger than MAX_ORDER_NR_PAGES. >> By doing this we can greatly improve the cache locality of the pages while >> we do several loops over them in the init and freeing process. >> >> We are able to tighten the loops as a result since we only really need the >> checks for first_init_pfn in our first iteration and after that we can >> assume that all future values will be greater than this. So I have added a >> function called deferred_init_mem_pfn_range_in_zone that primes the >> iterators and if it fails we can just exit. > > Numbers please. > > Besides that, this adds a lot of code and I am not convinced the result > is so much better to justify that. If I recall most of the gains are due to better cache locality. Instead of running through all of memory once for init, and once for freeing this patch has us doing it in MAX_ORDER_NR_PAGES sized chunks. So the advantage is that we can keep most of the pages structs in the L2 cache at least on x86 processors to avoid having to go to memory as much. I'll run performance numbers per patch today and try to make certain I have a line mentioning the delta for each patch in the v4 patch set. - Alex
next prev parent reply other threads:[~2018-10-17 15:17 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-10-15 20:26 [mm PATCH v3 0/6] Deferred page init improvements Alexander Duyck 2018-10-15 20:26 ` [mm PATCH v3 1/6] mm: Use mm_zero_struct_page from SPARC on all 64b architectures Alexander Duyck 2018-10-16 19:01 ` Pavel Tatashin 2018-10-17 7:30 ` Mike Rapoport 2018-10-17 14:52 ` Alexander Duyck 2018-10-17 8:47 ` Michal Hocko 2018-10-17 15:07 ` Alexander Duyck 2018-10-17 15:12 ` Pavel Tatashin 2018-10-17 15:40 ` David Laight 2018-10-17 16:31 ` Alexander Duyck 2018-10-17 17:08 ` Pavel Tatashin 2018-10-17 16:34 ` Michal Hocko 2018-10-15 20:27 ` [mm PATCH v3 2/6] mm: Drop meminit_pfn_in_nid as it is redundant Alexander Duyck 2018-10-16 20:33 ` Pavel Tatashin 2018-10-16 20:49 ` Alexander Duyck 2018-10-16 21:06 ` Pavel Tatashin 2018-10-17 9:04 ` Michal Hocko 2018-10-15 20:27 ` [mm PATCH v3 3/6] mm: Use memblock/zone specific iterator for handling deferred page init Alexander Duyck 2018-10-17 9:11 ` Michal Hocko 2018-10-17 15:17 ` Alexander Duyck [this message] 2018-10-17 16:42 ` Mike Rapoport 2018-10-15 20:27 ` [mm PATCH v3 4/6] mm: Move hot-plug specific memory init into separate functions and optimize Alexander Duyck 2018-10-17 9:18 ` Michal Hocko 2018-10-17 15:26 ` Alexander Duyck 2018-10-24 12:36 ` Michal Hocko 2018-10-24 15:08 ` Alexander Duyck 2018-10-24 15:27 ` Michal Hocko 2018-10-24 17:35 ` Alexander Duyck 2018-10-25 12:41 ` Michal Hocko 2018-10-15 20:27 ` [mm PATCH v3 5/6] mm: Use common iterator for deferred_init_pages and deferred_free_pages Alexander Duyck 2018-10-15 20:27 ` [mm PATCH v3 6/6] mm: Add reserved flag setting to set_page_links Alexander Duyck
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --subject='Re: [mm PATCH v3 3/6] mm: Use memblock/zone specific iterator for handling deferred page init' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).