)]}'
{
  "commit": "e498be7dafd72fd68848c1eef1575aa7c5d658df",
  "tree": "e09df3a70db15aa55555297155e04aee3d72de62",
  "parents": [
    "bd65a68574b787304a0cd90f22cfd44540ce3695"
  ],
  "author": {
    "name": "Christoph Lameter",
    "email": "clameter@engr.sgi.com",
    "time": "Fri Sep 09 13:03:32 2005 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Fri Sep 09 13:57:48 2005 -0700"
  },
  "message": "[PATCH] Numa-aware slab allocator V5\n\nThe NUMA API change that introduced kmalloc_node was accepted for\n2.6.12-rc3.  Now it is possible to do slab allocations on a node to\nlocalize memory structures.  This API was used by the pageset localization\npatch and the block layer localization patch now in mm.  The existing\nkmalloc_node is slow since it simply searches through all pages of the slab\nto find a page that is on the node requested.  The two patches do a one\ntime allocation of slab structures at initialization and therefore the\nspeed of kmalloc node does not matter.\n\nThis patch allows kmalloc_node to be as fast as kmalloc by introducing node\nspecific page lists for partial, free and full slabs.  Slab allocation\nimproves in a NUMA system so that we are seeing a performance gain in AIM7\nof about 5% with this patch alone.\n\nMore NUMA localizations are possible if kmalloc_node operates in an fast\nway like kmalloc.\n\nTest run on a 32p systems with 32G Ram.\n\nw/o patch\nTasks    jobs/min  jti  jobs/min/task      real       cpu\n    1      485.36  100       485.3640     11.99      1.91   Sat Apr 30 14:01:51 2005\n  100    26582.63   88       265.8263     21.89    144.96   Sat Apr 30 14:02:14 2005\n  200    29866.83   81       149.3342     38.97    286.08   Sat Apr 30 14:02:53 2005\n  300    33127.16   78       110.4239     52.71    426.54   Sat Apr 30 14:03:46 2005\n  400    34889.47   80        87.2237     66.72    568.90   Sat Apr 30 14:04:53 2005\n  500    35654.34   76        71.3087     81.62    714.55   Sat Apr 30 14:06:15 2005\n  600    36460.83   75        60.7681     95.77    853.42   Sat Apr 30 14:07:51 2005\n  700    35957.00   75        51.3671    113.30    990.67   Sat Apr 30 14:09:45 2005\n  800    33380.65   73        41.7258    139.48   1140.86   Sat Apr 30 14:12:05 2005\n  900    35095.01   76        38.9945    149.25   1281.30   Sat Apr 30 14:14:35 2005\n 1000    36094.37   74        36.0944    161.24   1419.66   Sat Apr 30 14:17:17 2005\n\nw/patch\nTasks    jobs/min  jti  jobs/min/task      real       cpu\n    1      484.27  100       484.2736     12.02      1.93   Sat Apr 30 15:59:45 2005\n  100    28262.03   90       282.6203     20.59    143.57   Sat Apr 30 16:00:06 2005\n  200    32246.45   82       161.2322     36.10    282.89   Sat Apr 30 16:00:42 2005\n  300    37945.80   83       126.4860     46.01    418.75   Sat Apr 30 16:01:28 2005\n  400    40000.69   81       100.0017     58.20    561.48   Sat Apr 30 16:02:27 2005\n  500    40976.10   78        81.9522     71.02    696.95   Sat Apr 30 16:03:38 2005\n  600    41121.54   78        68.5359     84.92    834.86   Sat Apr 30 16:05:04 2005\n  700    44052.77   78        62.9325     92.48    971.53   Sat Apr 30 16:06:37 2005\n  800    41066.89   79        51.3336    113.38   1111.15   Sat Apr 30 16:08:31 2005\n  900    38918.77   79        43.2431    134.59   1252.57   Sat Apr 30 16:10:46 2005\n 1000    41842.21   76        41.8422    139.09   1392.33   Sat Apr 30 16:13:05 2005\n\nThese are measurement taken directly after boot and show a greater\nimprovement than 5%.  However, the performance improvements become less\nover time if the AIM7 runs are repeated and settle down at around 5%.\n\nLinks to earlier discussions:\nhttp://marc.theaimsgroup.com/?t\u003d111094594500003\u0026r\u003d1\u0026w\u003d2\nhttp://marc.theaimsgroup.com/?t\u003d111603406600002\u0026r\u003d1\u0026w\u003d2\n\nChangelog V4-V5:\n- alloc_arraycache and alloc_aliencache take node parameter instead of cpu\n- fix initialization so that nodes without cpus are properly handled.\n- simplify code in kmem_cache_init\n- patch against Andrews temp mm3 release\n- Add Shai to credits\n- fallback to __cache_alloc from __cache_alloc_node if the node\u0027s cache\n  is not available yet.\n\nChangelog V3-V4:\n- Patch against 2.6.12-rc5-mm1\n- Cleanup patch integrated\n- More and better use of for_each_node and for_each_cpu\n- GCC 2.95 fix (do not use [] use [0])\n- Correct determination of INDEX_AC\n- Remove hack to cause an error on platforms that have no CONFIG_NUMA but nodes.\n- Remove list3_data and list3_data_ptr macros for better readability\n\nChangelog V2-V3:\n- Made to patch against 2.6.12-rc4-mm1\n- Revised bootstrap mechanism so that larger size kmem_list3 structs can be\n  supported. Do a generic solution so that the right slab can be found\n  for the internal structs.\n- use for_each_online_node\n\nChangelog V1-V2:\n- Batching for freeing of wrong-node objects (alien caches)\n- Locking changes and NUMA #ifdefs as requested by Manfred\n\nSigned-off-by: Alok N Kataria \u003calokk@calsoftinc.com\u003e\nSigned-off-by: Shobhit Dayal \u003cshobhit@calsoftinc.com\u003e\nSigned-off-by: Shai Fultheim \u003cShai@Scalex86.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d7c4443991fe8e29e16dfaffa30a1711c6844c30",
      "old_mode": 33188,
      "old_path": "mm/slab.c",
      "new_id": "a041c5378dfa59895c411d07b88cf69153275a11",
      "new_mode": 33188,
      "new_path": "mm/slab.c"
    }
  ]
}
