From: Pasha Tatashin <Pavel.Tatashin@microsoft.com>
To: Alexander Duyck <alexander.h.duyck@linux.intel.com>,
Pasha Tatashin <Pavel.Tatashin@microsoft.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>
Cc: "mhocko@suse.com" <mhocko@suse.com>,
"dave.jiang@intel.com" <dave.jiang@intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"willy@infradead.org" <willy@infradead.org>,
"davem@davemloft.net" <davem@davemloft.net>,
"yi.z.zhang@linux.intel.com" <yi.z.zhang@linux.intel.com>,
"khalid.aziz@oracle.com" <khalid.aziz@oracle.com>,
"rppt@linux.vnet.ibm.com" <rppt@linux.vnet.ibm.com>,
"vbabka@suse.cz" <vbabka@suse.cz>,
"sparclinux@vger.kernel.org" <sparclinux@vger.kernel.org>,
"dan.j.williams@intel.com" <dan.j.williams@intel.com>,
"ldufour@linux.vnet.ibm.com" <ldufour@linux.vnet.ibm.com>,
"mgorman@techsingularity.net" <mgorman@techsingularity.net>,
"mingo@kernel.org" <mingo@kernel.org>,
"kirill.shutemov@linux.intel.com"
<kirill.shutemov@linux.intel.com>
Subject: Re: [mm PATCH v4 3/6] mm: Use memblock/zone specific iterator for handling deferred page init
Date: Wed, 31 Oct 2018 16:06:17 +0000 [thread overview]
Message-ID: <0201b67f-e6a7-623c-77e1-f080d5bf30b5@microsoft.com> (raw)
In-Reply-To: <a7c1bc0ed1e68cbc32c4dd6753fa9f8ff7f1421f.camel@linux.intel.com>
DQoNCk9uIDEwLzMxLzE4IDEyOjA1IFBNLCBBbGV4YW5kZXIgRHV5Y2sgd3JvdGU6DQo+IE9uIFdl
ZCwgMjAxOC0xMC0zMSBhdCAxNTo0MCArMDAwMCwgUGFzaGEgVGF0YXNoaW4gd3JvdGU6DQo+Pg0K
Pj4gT24gMTAvMTcvMTggNzo1NCBQTSwgQWxleGFuZGVyIER1eWNrIHdyb3RlOg0KPj4+IFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBpdGVyYXRvciBmb3JfZWFjaF9mcmVlX21lbV9wZm5fcmFu
Z2VfaW5fem9uZS4NCj4+Pg0KPj4+IFRoaXMgaXRlcmF0b3Igd2lsbCB0YWtlIGNhcmUgb2YgbWFr
aW5nIHN1cmUgYSBnaXZlbiBtZW1vcnkgcmFuZ2UgcHJvdmlkZWQNCj4+PiBpcyBpbiBmYWN0IGNv
bnRhaW5lZCB3aXRoaW4gYSB6b25lLiBJdCB0YWtlcyBhcmUgb2YgYWxsIHRoZSBib3VuZHMgY2hl
Y2tpbmcNCj4+PiB3ZSB3ZXJlIGRvaW5nIGluIGRlZmVycmVkX2dyb3dfem9uZSwgYW5kIGRlZmVy
cmVkX2luaXRfbWVtbWFwLiBJbiBhZGRpdGlvbg0KPj4+IGl0IHNob3VsZCBoZWxwIHRvIHNwZWVk
IHVwIHRoZSBzZWFyY2ggYSBiaXQgYnkgaXRlcmF0aW5nIHVudGlsIHRoZSBlbmQgb2YgYQ0KPj4+
IHJhbmdlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3RhcnQgb2YgdGhlIHpvbmUgcGZuIHJhbmdlLCBh
bmQgd2lsbCBleGl0DQo+Pj4gY29tcGxldGVseSBpZiB0aGUgc3RhcnQgaXMgYmV5b25kIHRoZSBl
bmQgb2YgdGhlIHpvbmUuDQo+Pj4NCj4+PiBUaGlzIHBhdGNoIGFkZHMgeWV0IGFub3RoZXIgaXRl
cmF0b3IgY2FsbGVkDQo+Pj4gZm9yX2VhY2hfZnJlZV9tZW1fcmFuZ2VfaW5fem9uZV9mcm9tIGFu
ZCB0aGVuIHVzZXMgaXQgdG8gc3VwcG9ydA0KPj4+IGluaXRpYWxpemluZyBhbmQgZnJlZWluZyBw
YWdlcyBpbiBncm91cHMgbm8gbGFyZ2VyIHRoYW4gTUFYX09SREVSX05SX1BBR0VTLg0KPj4+IEJ5
IGRvaW5nIHRoaXMgd2UgY2FuIGdyZWF0bHkgaW1wcm92ZSB0aGUgY2FjaGUgbG9jYWxpdHkgb2Yg
dGhlIHBhZ2VzIHdoaWxlDQo+Pj4gd2UgZG8gc2V2ZXJhbCBsb29wcyBvdmVyIHRoZW0gaW4gdGhl
IGluaXQgYW5kIGZyZWVpbmcgcHJvY2Vzcy4NCj4+Pg0KPj4+IFdlIGFyZSBhYmxlIHRvIHRpZ2h0
ZW4gdGhlIGxvb3BzIGFzIGEgcmVzdWx0IHNpbmNlIHdlIG9ubHkgcmVhbGx5IG5lZWQgdGhlDQo+
Pj4gY2hlY2tzIGZvciBmaXJzdF9pbml0X3BmbiBpbiBvdXIgZmlyc3QgaXRlcmF0aW9uIGFuZCBh
ZnRlciB0aGF0IHdlIGNhbg0KPj4+IGFzc3VtZSB0aGF0IGFsbCBmdXR1cmUgdmFsdWVzIHdpbGwg
YmUgZ3JlYXRlciB0aGFuIHRoaXMuIFNvIEkgaGF2ZSBhZGRlZCBhDQo+Pj4gZnVuY3Rpb24gY2Fs
bGVkIGRlZmVycmVkX2luaXRfbWVtX3Bmbl9yYW5nZV9pbl96b25lIHRoYXQgcHJpbWVzIHRoZQ0K
Pj4+IGl0ZXJhdG9ycyBhbmQgaWYgaXQgZmFpbHMgd2UgY2FuIGp1c3QgZXhpdC4NCj4+Pg0KPj4+
IE9uIG15IHg4Nl82NCB0ZXN0IHN5c3RlbSB3aXRoIDM4NEdCIG9mIG1lbW9yeSBwZXIgbm9kZSBJ
IHNhdyBhIHJlZHVjdGlvbiBpbg0KPj4+IGluaXRpYWxpemF0aW9uIHRpbWUgZnJvbSAxLjg1cyB0
byAxLjM4cyBhcyBhIHJlc3VsdCBvZiB0aGlzIHBhdGNoLg0KPj4+DQo+Pj4gU2lnbmVkLW9mZi1i
eTogQWxleGFuZGVyIER1eWNrIDxhbGV4YW5kZXIuaC5kdXlja0BsaW51eC5pbnRlbC5jb20+DQo+
Pg0KPj4gSGkgQWxleCwNCj4+DQo+PiBDb3VsZCB5b3UgcGxlYXNlIHNwbGl0IHRoaXMgcGF0Y2gg
aW50byB0d28gcGFydHM6DQo+Pg0KPj4gMS4gQWRkIGRlZmVycmVkX2luaXRfbWF4b3JkZXIoKQ0K
Pj4gMi4gQWRkIG1lbWJsb2NrIGl0ZXJhdG9yPw0KPj4NCj4+IFRoaXMgd291bGQgYWxsb3cgYSBi
ZXR0ZXIgYmlzZWN0aW5nIGluIGNhc2Ugb2YgcHJvYmxlbXMuIENoYW5pbmcgdHdvDQo+PiBsb29w
cyBpbnRvIGRlZmVycmVkX2luaXRfbWF4b3JkZXIoKSB3aGlsZSBhIGdvb2QgaWRlYSwgaXMgc3Rp
bGwNCj4+IG5vbi10cml2aWFsIGFuZCBtaWdodCBsZWFkIHRvIGJ1Z3MuDQo+Pg0KPj4gVGhhbmsg
eW91LA0KPj4gUGF2ZWwNCj4gDQo+IEkgY2FuIGRvIHRoYXQsIGJ1dCBJIHdpbGwgbmVlZCB0byBm
bGlwIHRoZSBvcmRlci4gSSB3aWxsIGFkZCB0aGUgbmV3DQo+IGl0ZXJhdG9yIGZpcnN0IGFuZCB0
aGVuIGRlZmVycmVkX2luaXRfbWF4b3JkZXIuIE90aGVyd2lzZSB0aGUNCj4gaW50ZXJtZWRpYXRl
IHN0ZXAgZW5kcyB1cCBiZWluZyB0b28gbXVjaCB0aHJvdy1hd2F5IGNvZGUuDQoNClRoYXQgc291
bmRzIGdvb2QuDQoNClRoYW5rIHlvdSwNClBhdmVsDQoNCj4gDQo+IC0gQWxleA0KPiA
WARNING: multiple messages have this Message-ID (diff)
From: Pasha Tatashin <Pavel.Tatashin@microsoft.com>
To: Alexander Duyck <alexander.h.duyck@linux.intel.com>,
Pasha Tatashin <Pavel.Tatashin@microsoft.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>
Cc: "mhocko@suse.com" <mhocko@suse.com>,
"dave.jiang@intel.com" <dave.jiang@intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"willy@infradead.org" <willy@infradead.org>,
"davem@davemloft.net" <davem@davemloft.net>,
"yi.z.zhang@linux.intel.com" <yi.z.zhang@linux.intel.com>,
"khalid.aziz@oracle.com" <khalid.aziz@oracle.com>,
"rppt@linux.vnet.ibm.com" <rppt@linux.vnet.ibm.com>,
"vbabka@suse.cz" <vbabka@suse.cz>,
"sparclinux@vger.kernel.org" <sparclinux@vger.kernel.org>,
"dan.j.williams@intel.com" <dan.j.williams@intel.com>,
"ldufour@linux.vnet.ibm.com" <ldufour@linux.vnet.ibm.com>,
"mgorman@techsingularity.net" <mgorman@techsingularity.net>,
"mingo@kernel.org" <mingo@kernel.org>,
"kirill.shutemov@linux.intel.com"
<kirill.shutemov@linux.intel.com>
Subject: Re: [mm PATCH v4 3/6] mm: Use memblock/zone specific iterator for handling deferred page init
Date: Wed, 31 Oct 2018 16:06:17 +0000 [thread overview]
Message-ID: <0201b67f-e6a7-623c-77e1-f080d5bf30b5@microsoft.com> (raw)
In-Reply-To: <a7c1bc0ed1e68cbc32c4dd6753fa9f8ff7f1421f.camel@linux.intel.com>
On 10/31/18 12:05 PM, Alexander Duyck wrote:
> On Wed, 2018-10-31 at 15:40 +0000, Pasha Tatashin wrote:
>>
>> On 10/17/18 7:54 PM, 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.
>>>
>>> On my x86_64 test system with 384GB of memory per node I saw a reduction in
>>> initialization time from 1.85s to 1.38s as a result of this patch.
>>>
>>> Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
>>
>> Hi Alex,
>>
>> Could you please split this patch into two parts:
>>
>> 1. Add deferred_init_maxorder()
>> 2. Add memblock iterator?
>>
>> This would allow a better bisecting in case of problems. Chaning two
>> loops into deferred_init_maxorder() while a good idea, is still
>> non-trivial and might lead to bugs.
>>
>> Thank you,
>> Pavel
>
> I can do that, but I will need to flip the order. I will add the new
> iterator first and then deferred_init_maxorder. Otherwise the
> intermediate step ends up being too much throw-away code.
That sounds good.
Thank you,
Pavel
>
> - Alex
>
next prev parent reply other threads:[~2018-10-31 16:06 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-17 23:54 [mm PATCH v4 0/6] Deferred page init improvements Alexander Duyck
2018-10-17 23:54 ` Alexander Duyck
2018-10-17 23:54 ` [mm PATCH v4 1/6] mm: Use mm_zero_struct_page from SPARC on all 64b architectures Alexander Duyck
2018-10-17 23:54 ` Alexander Duyck
2018-10-18 18:29 ` Pavel Tatashin
2018-10-18 18:29 ` Pavel Tatashin
2018-10-29 20:12 ` Michal Hocko
2018-10-29 20:12 ` Michal Hocko
2018-10-17 23:54 ` [mm PATCH v4 2/6] mm: Drop meminit_pfn_in_nid as it is redundant Alexander Duyck
2018-10-17 23:54 ` Alexander Duyck
2018-10-17 23:54 ` [mm PATCH v4 3/6] mm: Use memblock/zone specific iterator for handling deferred page init Alexander Duyck
2018-10-17 23:54 ` Alexander Duyck
2018-10-31 15:40 ` Pasha Tatashin
2018-10-31 15:40 ` Pasha Tatashin
2018-10-31 16:05 ` Alexander Duyck
2018-10-31 16:05 ` Alexander Duyck
2018-10-31 16:06 ` Pasha Tatashin [this message]
2018-10-31 16:06 ` Pasha Tatashin
2018-11-01 6:17 ` Mike Rapoport
2018-11-01 6:17 ` Mike Rapoport
2018-11-01 15:10 ` Alexander Duyck
2018-11-01 15:10 ` Alexander Duyck
2018-10-17 23:54 ` [mm PATCH v4 4/6] mm: Move hot-plug specific memory init into separate functions and optimize Alexander Duyck
2018-10-17 23:54 ` Alexander Duyck
2018-10-17 23:54 ` [mm PATCH v4 5/6] mm: Add reserved flag setting to set_page_links Alexander Duyck
2018-10-17 23:54 ` Alexander Duyck
2018-10-17 23:54 ` [mm PATCH v4 6/6] mm: Use common iterator for deferred_init_pages and deferred_free_pages Alexander Duyck
2018-10-17 23:54 ` 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 \
--in-reply-to=0201b67f-e6a7-623c-77e1-f080d5bf30b5@microsoft.com \
--to=pavel.tatashin@microsoft.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.h.duyck@linux.intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=davem@davemloft.net \
--cc=khalid.aziz@oracle.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=ldufour@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=mhocko@suse.com \
--cc=mingo@kernel.org \
--cc=rppt@linux.vnet.ibm.com \
--cc=sparclinux@vger.kernel.org \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
--cc=yi.z.zhang@linux.intel.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.