)]}'
{
  "commit": "14315592009c17035cac81f4954d5a1f4d71e489",
  "tree": "2e67453497e0b0ba08be2aeafe971430a5a28f67",
  "parents": [
    "e808bae2407a087bfd40200a27587898e5a9909d"
  ],
  "author": {
    "name": "Ian Campbell",
    "email": "ian.campbell@citrix.com",
    "time": "Wed Feb 17 10:38:10 2010 +0000"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Thu Feb 25 10:28:19 2010 +0100"
  },
  "message": "x86, mm: Allow highmem user page tables to be disabled at boot time\n\nDistros generally (I looked at Debian, RHEL5 and SLES11) seem to\nenable CONFIG_HIGHPTE for any x86 configuration which has highmem\nenabled. This means that the overhead applies even to machines which\nhave a fairly modest amount of high memory and which therefore do not\nreally benefit from allocating PTEs in high memory but still pay the\nprice of the additional mapping operations.\n\nRunning kernbench on a 4G box I found that with CONFIG_HIGHPTE\u003dy but\nno actual highptes being allocated there was a reduction in system\ntime used from 59.737s to 55.9s.\n\nWith CONFIG_HIGHPTE\u003dy and highmem PTEs being allocated:\n  Average Optimal load -j 4 Run (std deviation):\n  Elapsed Time 175.396 (0.238914)\n  User Time 515.983 (5.85019)\n  System Time 59.737 (1.26727)\n  Percent CPU 263.8 (71.6796)\n  Context Switches 39989.7 (4672.64)\n  Sleeps 42617.7 (246.307)\n\nWith CONFIG_HIGHPTE\u003dy but with no highmem PTEs being allocated:\n  Average Optimal load -j 4 Run (std deviation):\n  Elapsed Time 174.278 (0.831968)\n  User Time 515.659 (6.07012)\n  System Time 55.9 (1.07799)\n  Percent CPU 263.8 (71.266)\n  Context Switches 39929.6 (4485.13)\n  Sleeps 42583.7 (373.039)\n\nThis patch allows the user to control the allocation of PTEs in\nhighmem from the command line (\"userpte\u003dnohigh\") but retains the\nstatus-quo as the default.\n\nIt is possible that some simple heuristic could be developed which\nallows auto-tuning of this option however I don\u0027t have a sufficiently\nlarge machine available to me to perform any particularly meaningful\nexperiments. We could probably handwave up an argument for a threshold\nat 16G of total RAM.\n\nAssuming 768M of lowmem we have 196608 potential lowmem PTE\npages. Each page can map 2M of RAM in a PAE-enabled configuration,\nmeaning a maximum of 384G of RAM could potentially be mapped using\nlowmem PTEs.\n\nEven allowing generous factor of 10 to account for other required\nlowmem allocations, generous slop to account for page sharing (which\nreduces the total amount of RAM mappable by a given number of PT\npages) and other innacuracies in the estimations it would seem that\neven a 32G machine would not have a particularly pressing need for\nhighmem PTEs. I think 32G could be considered to be at the upper bound\nof what might be sensible on a 32 bit machine (although I think in\npractice 64G is still supported).\n\nIt\u0027s seems questionable if HIGHPTE is even a win for any amount of RAM\nyou would sensibly run a 32 bit kernel on rather than going 64 bit.\n\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nLKML-Reference: \u003c1266403090-20162-1-git-send-email-ian.campbell@citrix.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "736d45602886ea7b08024f246f06e9c7c6dc1a05",
      "old_mode": 33188,
      "old_path": "Documentation/kernel-parameters.txt",
      "new_id": "67c69ffe7b7fcf1d92ae7bee6a095ebddb1d5172",
      "new_mode": 33188,
      "new_path": "Documentation/kernel-parameters.txt"
    },
    {
      "type": "modify",
      "old_id": "0e8c2a0fd9222d4b75793fb664591de22461e7d7",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/pgalloc.h",
      "new_id": "271de94c3810d9bbdb2c01bbfbb43f221b46ee24",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/pgalloc.h"
    },
    {
      "type": "modify",
      "old_id": "ed34f5e35999449a488be43ced0e580319b373f1",
      "old_mode": 33188,
      "old_path": "arch/x86/mm/pgtable.c",
      "new_id": "c9ba9deafe83f30daaae9b0e998c3de715671d43",
      "new_mode": 33188,
      "new_path": "arch/x86/mm/pgtable.c"
    }
  ]
}
