diff for duplicates of <0201b67f-e6a7-623c-77e1-f080d5bf30b5@microsoft.com> diff --git a/a/1.txt b/N1/1.txt index 6892c2f..09e054a 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,40 +1,58 @@ -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 + + +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 +> diff --git a/a/content_digest b/N1/content_digest index a3f8887..9d261eb 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -26,45 +26,63 @@ " kirill.shutemov@linux.intel.com <kirill.shutemov@linux.intel.com>\0" "\00:1\0" "b\0" - "DQoNCk9uIDEwLzMxLzE4IDEyOjA1IFBNLCBBbGV4YW5kZXIgRHV5Y2sgd3JvdGU6DQo+IE9uIFdl\n" - "ZCwgMjAxOC0xMC0zMSBhdCAxNTo0MCArMDAwMCwgUGFzaGEgVGF0YXNoaW4gd3JvdGU6DQo+Pg0K\n" - "Pj4gT24gMTAvMTcvMTggNzo1NCBQTSwgQWxleGFuZGVyIER1eWNrIHdyb3RlOg0KPj4+IFRoaXMg\n" - "cGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBpdGVyYXRvciBmb3JfZWFjaF9mcmVlX21lbV9wZm5fcmFu\n" - "Z2VfaW5fem9uZS4NCj4+Pg0KPj4+IFRoaXMgaXRlcmF0b3Igd2lsbCB0YWtlIGNhcmUgb2YgbWFr\n" - "aW5nIHN1cmUgYSBnaXZlbiBtZW1vcnkgcmFuZ2UgcHJvdmlkZWQNCj4+PiBpcyBpbiBmYWN0IGNv\n" - "bnRhaW5lZCB3aXRoaW4gYSB6b25lLiBJdCB0YWtlcyBhcmUgb2YgYWxsIHRoZSBib3VuZHMgY2hl\n" - "Y2tpbmcNCj4+PiB3ZSB3ZXJlIGRvaW5nIGluIGRlZmVycmVkX2dyb3dfem9uZSwgYW5kIGRlZmVy\n" - "cmVkX2luaXRfbWVtbWFwLiBJbiBhZGRpdGlvbg0KPj4+IGl0IHNob3VsZCBoZWxwIHRvIHNwZWVk\n" - "IHVwIHRoZSBzZWFyY2ggYSBiaXQgYnkgaXRlcmF0aW5nIHVudGlsIHRoZSBlbmQgb2YgYQ0KPj4+\n" - "IHJhbmdlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3RhcnQgb2YgdGhlIHpvbmUgcGZuIHJhbmdlLCBh\n" - "bmQgd2lsbCBleGl0DQo+Pj4gY29tcGxldGVseSBpZiB0aGUgc3RhcnQgaXMgYmV5b25kIHRoZSBl\n" - "bmQgb2YgdGhlIHpvbmUuDQo+Pj4NCj4+PiBUaGlzIHBhdGNoIGFkZHMgeWV0IGFub3RoZXIgaXRl\n" - "cmF0b3IgY2FsbGVkDQo+Pj4gZm9yX2VhY2hfZnJlZV9tZW1fcmFuZ2VfaW5fem9uZV9mcm9tIGFu\n" - "ZCB0aGVuIHVzZXMgaXQgdG8gc3VwcG9ydA0KPj4+IGluaXRpYWxpemluZyBhbmQgZnJlZWluZyBw\n" - "YWdlcyBpbiBncm91cHMgbm8gbGFyZ2VyIHRoYW4gTUFYX09SREVSX05SX1BBR0VTLg0KPj4+IEJ5\n" - "IGRvaW5nIHRoaXMgd2UgY2FuIGdyZWF0bHkgaW1wcm92ZSB0aGUgY2FjaGUgbG9jYWxpdHkgb2Yg\n" - "dGhlIHBhZ2VzIHdoaWxlDQo+Pj4gd2UgZG8gc2V2ZXJhbCBsb29wcyBvdmVyIHRoZW0gaW4gdGhl\n" - "IGluaXQgYW5kIGZyZWVpbmcgcHJvY2Vzcy4NCj4+Pg0KPj4+IFdlIGFyZSBhYmxlIHRvIHRpZ2h0\n" - "ZW4gdGhlIGxvb3BzIGFzIGEgcmVzdWx0IHNpbmNlIHdlIG9ubHkgcmVhbGx5IG5lZWQgdGhlDQo+\n" - "Pj4gY2hlY2tzIGZvciBmaXJzdF9pbml0X3BmbiBpbiBvdXIgZmlyc3QgaXRlcmF0aW9uIGFuZCBh\n" - "ZnRlciB0aGF0IHdlIGNhbg0KPj4+IGFzc3VtZSB0aGF0IGFsbCBmdXR1cmUgdmFsdWVzIHdpbGwg\n" - "YmUgZ3JlYXRlciB0aGFuIHRoaXMuIFNvIEkgaGF2ZSBhZGRlZCBhDQo+Pj4gZnVuY3Rpb24gY2Fs\n" - "bGVkIGRlZmVycmVkX2luaXRfbWVtX3Bmbl9yYW5nZV9pbl96b25lIHRoYXQgcHJpbWVzIHRoZQ0K\n" - "Pj4+IGl0ZXJhdG9ycyBhbmQgaWYgaXQgZmFpbHMgd2UgY2FuIGp1c3QgZXhpdC4NCj4+Pg0KPj4+\n" - "IE9uIG15IHg4Nl82NCB0ZXN0IHN5c3RlbSB3aXRoIDM4NEdCIG9mIG1lbW9yeSBwZXIgbm9kZSBJ\n" - "IHNhdyBhIHJlZHVjdGlvbiBpbg0KPj4+IGluaXRpYWxpemF0aW9uIHRpbWUgZnJvbSAxLjg1cyB0\n" - "byAxLjM4cyBhcyBhIHJlc3VsdCBvZiB0aGlzIHBhdGNoLg0KPj4+DQo+Pj4gU2lnbmVkLW9mZi1i\n" - "eTogQWxleGFuZGVyIER1eWNrIDxhbGV4YW5kZXIuaC5kdXlja0BsaW51eC5pbnRlbC5jb20+DQo+\n" - "Pg0KPj4gSGkgQWxleCwNCj4+DQo+PiBDb3VsZCB5b3UgcGxlYXNlIHNwbGl0IHRoaXMgcGF0Y2gg\n" - "aW50byB0d28gcGFydHM6DQo+Pg0KPj4gMS4gQWRkIGRlZmVycmVkX2luaXRfbWF4b3JkZXIoKQ0K\n" - "Pj4gMi4gQWRkIG1lbWJsb2NrIGl0ZXJhdG9yPw0KPj4NCj4+IFRoaXMgd291bGQgYWxsb3cgYSBi\n" - "ZXR0ZXIgYmlzZWN0aW5nIGluIGNhc2Ugb2YgcHJvYmxlbXMuIENoYW5pbmcgdHdvDQo+PiBsb29w\n" - "cyBpbnRvIGRlZmVycmVkX2luaXRfbWF4b3JkZXIoKSB3aGlsZSBhIGdvb2QgaWRlYSwgaXMgc3Rp\n" - "bGwNCj4+IG5vbi10cml2aWFsIGFuZCBtaWdodCBsZWFkIHRvIGJ1Z3MuDQo+Pg0KPj4gVGhhbmsg\n" - "eW91LA0KPj4gUGF2ZWwNCj4gDQo+IEkgY2FuIGRvIHRoYXQsIGJ1dCBJIHdpbGwgbmVlZCB0byBm\n" - "bGlwIHRoZSBvcmRlci4gSSB3aWxsIGFkZCB0aGUgbmV3DQo+IGl0ZXJhdG9yIGZpcnN0IGFuZCB0\n" - "aGVuIGRlZmVycmVkX2luaXRfbWF4b3JkZXIuIE90aGVyd2lzZSB0aGUNCj4gaW50ZXJtZWRpYXRl\n" - "IHN0ZXAgZW5kcyB1cCBiZWluZyB0b28gbXVjaCB0aHJvdy1hd2F5IGNvZGUuDQoNClRoYXQgc291\n" - bmRzIGdvb2QuDQoNClRoYW5rIHlvdSwNClBhdmVsDQoNCj4gDQo+IC0gQWxleA0KPiA + "\n" + "\n" + "On 10/31/18 12:05 PM, Alexander Duyck wrote:\n" + "> On Wed, 2018-10-31 at 15:40 +0000, Pasha Tatashin wrote:\n" + ">>\n" + ">> On 10/17/18 7:54 PM, Alexander Duyck wrote:\n" + ">>> This patch introduces a new iterator for_each_free_mem_pfn_range_in_zone.\n" + ">>>\n" + ">>> This iterator will take care of making sure a given memory range provided\n" + ">>> is in fact contained within a zone. It takes are of all the bounds checking\n" + ">>> we were doing in deferred_grow_zone, and deferred_init_memmap. In addition\n" + ">>> it should help to speed up the search a bit by iterating until the end of a\n" + ">>> range is greater than the start of the zone pfn range, and will exit\n" + ">>> completely if the start is beyond the end of the zone.\n" + ">>>\n" + ">>> This patch adds yet another iterator called\n" + ">>> for_each_free_mem_range_in_zone_from and then uses it to support\n" + ">>> initializing and freeing pages in groups no larger than MAX_ORDER_NR_PAGES.\n" + ">>> By doing this we can greatly improve the cache locality of the pages while\n" + ">>> we do several loops over them in the init and freeing process.\n" + ">>>\n" + ">>> We are able to tighten the loops as a result since we only really need the\n" + ">>> checks for first_init_pfn in our first iteration and after that we can\n" + ">>> assume that all future values will be greater than this. So I have added a\n" + ">>> function called deferred_init_mem_pfn_range_in_zone that primes the\n" + ">>> iterators and if it fails we can just exit.\n" + ">>>\n" + ">>> On my x86_64 test system with 384GB of memory per node I saw a reduction in\n" + ">>> initialization time from 1.85s to 1.38s as a result of this patch.\n" + ">>>\n" + ">>> Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>\n" + ">>\n" + ">> Hi Alex,\n" + ">>\n" + ">> Could you please split this patch into two parts:\n" + ">>\n" + ">> 1. Add deferred_init_maxorder()\n" + ">> 2. Add memblock iterator?\n" + ">>\n" + ">> This would allow a better bisecting in case of problems. Chaning two\n" + ">> loops into deferred_init_maxorder() while a good idea, is still\n" + ">> non-trivial and might lead to bugs.\n" + ">>\n" + ">> Thank you,\n" + ">> Pavel\n" + "> \n" + "> I can do that, but I will need to flip the order. I will add the new\n" + "> iterator first and then deferred_init_maxorder. Otherwise the\n" + "> intermediate step ends up being too much throw-away code.\n" + "\n" + "That sounds good.\n" + "\n" + "Thank you,\n" + "Pavel\n" + "\n" + "> \n" + "> - Alex\n" + > -8bc4dce8c6f2388de1a818c2ca97e821f355c105d5a71a55f377adaac40a5623 +9de0469fb48f55f262a90cc345d971919ff47a0647bec6c8c3f40a79d873fa5d
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.