)]}'
{
  "commit": "f7f99100d8d95dbcf09e0216a143211e79418b9f",
  "tree": "58e42a439b1acbf5d8c76f3c3820d896b4f71c8c",
  "parents": [
    "e17d8025f07e4fd9d73b137a8bcab04548126b83"
  ],
  "author": {
    "name": "Pavel Tatashin",
    "email": "pasha.tatashin@oracle.com",
    "time": "Wed Nov 15 17:36:44 2017 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed Nov 15 18:21:05 2017 -0800"
  },
  "message": "mm: stop zeroing memory during allocation in vmemmap\n\nvmemmap_alloc_block() will no longer zero the block, so zero memory at\nits call sites for everything except struct pages.  Struct page memory\nis zero\u0027d by struct page initialization.\n\nReplace allocators in sparse-vmemmap to use the non-zeroing version.\nSo, we will get the performance improvement by zeroing the memory in\nparallel when struct pages are zeroed.\n\nAdd struct page zeroing as a part of initialization of other fields in\n__init_single_page().\n\nThis single thread performance collected on: Intel(R) Xeon(R) CPU E7-8895\nv3 @ 2.60GHz with 1T of memory (268400646 pages in 8 nodes):\n\n                         BASE            FIX\nsparse_init     11.244671836s   0.007199623s\nzone_sizes_init  4.879775891s   8.355182299s\n                  --------------------------\nTotal           16.124447727s   8.362381922s\n\nsparse_init is where memory for struct pages is zeroed, and the zeroing\npart is moved later in this patch into __init_single_page(), which is\ncalled from zone_sizes_init().\n\n[akpm@linux-foundation.org: make vmemmap_alloc_block_zero() private to sparse-vmemmap.c]\nLink: http://lkml.kernel.org/r/20171013173214.27300-10-pasha.tatashin@oracle.com\nSigned-off-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nReviewed-by: Steven Sistare \u003csteven.sistare@oracle.com\u003e\nReviewed-by: Daniel Jordan \u003cdaniel.m.jordan@oracle.com\u003e\nReviewed-by: Bob Picco \u003cbob.picco@oracle.com\u003e\nTested-by: Bob Picco \u003cbob.picco@oracle.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Alexander Potapenko \u003cglider@google.com\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Ard Biesheuvel \u003card.biesheuvel@linaro.org\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Mark Rutland \u003cmark.rutland@arm.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c37343ef2889e4e88ecec31c8c6b7dfb6738a129",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "39e847cd1484582b6e46ba6807688c789bce9953",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    },
    {
      "type": "modify",
      "old_id": "478ce6d4a2c4e77141967e82bacaa7b3661e4d34",
      "old_mode": 33188,
      "old_path": "mm/sparse-vmemmap.c",
      "new_id": "4e49762599c87d1581823b50b7b667b150f06af7",
      "new_mode": 33188,
      "new_path": "mm/sparse-vmemmap.c"
    },
    {
      "type": "modify",
      "old_id": "60805abf98af71e53775c00bd2a5975b7f13e6fa",
      "old_mode": 33188,
      "old_path": "mm/sparse.c",
      "new_id": "7a5dacaa06e3f277c8543c502dba0e3c6a6a1a13",
      "new_mode": 33188,
      "new_path": "mm/sparse.c"
    }
  ]
}
