All of lore.kernel.org
 help / color / mirror / Atom feed
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.