)]}'
{
  "commit": "f0c0b2b808f232741eadac272bd4bc51f18df0f4",
  "tree": "c2568efdc496cc165a4e72d8aa2542b22035e342",
  "parents": [
    "18a8bd949d6adb311ea816125ff65050df1f3f6e"
  ],
  "author": {
    "name": "KAMEZAWA Hiroyuki",
    "email": "kamezawa.hiroyu@jp.fujitsu.com",
    "time": "Sun Jul 15 23:38:01 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Mon Jul 16 09:05:35 2007 -0700"
  },
  "message": "change zonelist order: zonelist order selection logic\n\nMake zonelist creation policy selectable from sysctl/boot option v6.\n\nThis patch makes NUMA\u0027s zonelist (of pgdat) order selectable.\nAvailable order are Default(automatic)/ Node-based / Zone-based.\n\n[Default Order]\nThe kernel selects Node-based or Zone-based order automatically.\n\n[Node-based Order]\nThis policy treats the locality of memory as the most important parameter.\nZonelist order is created by each zone\u0027s locality. This means lower zones\n(ex. ZONE_DMA) can be used before higher zone (ex. ZONE_NORMAL) exhausion.\nIOW. ZONE_DMA will be in the middle of zonelist.\ncurrent 2.6.21 kernel uses this.\n\nPros.\n * A user can expect local memory as much as possible.\nCons.\n * lower zone will be exhansted before higher zone. This may cause OOM_KILL.\n\nMaybe suitable if ZONE_DMA is relatively big and you never see OOM_KILL\nbecause of ZONE_DMA exhaution and you need the best locality.\n\n(example)\nassume 2 node NUMA. node(0) has ZONE_DMA/ZONE_NORMAL, node(1) has ZONE_NORMAL.\n\n*node(0)\u0027s memory allocation order:\n\n node(0)\u0027s NORMAL -\u003e node(0)\u0027s DMA -\u003e node(1)\u0027s NORMAL.\n\n*node(1)\u0027s memory allocation order:\n\n node(1)\u0027s NORMAL -\u003e node(0)\u0027s NORMAL -\u003e node(0)\u0027s DMA.\n\n[Zone-based order]\nThis policy treats the zone type as the most important parameter.\nZonelist order is created by zone-type order. This means lower zone\nnever be used bofere higher zone exhaustion.\nIOW. ZONE_DMA will be always at the tail of zonelist.\n\nPros.\n * OOM_KILL(bacause of lower zone) occurs only if the whole zones are exhausted.\nCons.\n * memory locality may not be best.\n\n(example)\nassume 2 node NUMA. node(0) has ZONE_DMA/ZONE_NORMAL, node(1) has ZONE_NORMAL.\n\n*node(0)\u0027s memory allocation order:\n\n node(0)\u0027s NORMAL -\u003e node(1)\u0027s NORMAL -\u003e node(0)\u0027s DMA.\n\n*node(1)\u0027s memory allocation order:\n\n node(1)\u0027s NORMAL -\u003e node(0)\u0027s NORMAL -\u003e node(0)\u0027s DMA.\n\nbootoption \"numa_zonelist_order\u003d\" and proc/sysctl is supporetd.\n\ncommand:\n%echo N \u003e /proc/sys/vm/numa_zonelist_order\n\nWill rebuild zonelist in Node-based order.\n\ncommand:\n%echo Z \u003e /proc/sys/vm/numa_zonelist_order\n\nWill rebuild zonelist in Zone-based order.\n\nThanks to Lee Schermerhorn, he gives me much help and codes.\n\n[Lee.Schermerhorn@hp.com: add check_highest_zone to build_zonelists_in_zone_order]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"jesse.barnes@intel.com\" \u003cjesse.barnes@intel.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.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": "62aab585d9d7fd4353986f4e114967ac5470ed60",
      "old_mode": 33188,
      "old_path": "Documentation/kernel-parameters.txt",
      "new_id": "4344f69ae24a6b7115144d7898d14cdd1b28b5e8",
      "new_mode": 33188,
      "new_path": "Documentation/kernel-parameters.txt"
    },
    {
      "type": "modify",
      "old_id": "8cfca173d4bca46fab5c121be80d070858aaa0c6",
      "old_mode": 33188,
      "old_path": "Documentation/sysctl/vm.txt",
      "new_id": "df3ff2095f9d2decc6846f7286a27702370efbe4",
      "new_mode": 33188,
      "new_path": "Documentation/sysctl/vm.txt"
    },
    {
      "type": "modify",
      "old_id": "d09b1345a3a14fcf7f5115a2d6efc092e25bd8ed",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "04b1636a970bdd77d1788272d8286dc9b41fdf2e",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "d93e13d93f24c0c25d0bfc9cfe4944cd239fc10f",
      "old_mode": 33188,
      "old_path": "kernel/sysctl.c",
      "new_id": "ccaebbbd75ae4f0b66119c0a1dce610b232e0115",
      "new_mode": 33188,
      "new_path": "kernel/sysctl.c"
    },
    {
      "type": "modify",
      "old_id": "05ace44852eb88c9f2c6fa50b98d3ecd569d202c",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "092b2d8f2f0cb32452f460966b82e1f92a94d232",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    }
  ]
}
