)]}'
{
  "commit": "8b3e6cdc53b7f29f7026955d6cb6902a49322a15",
  "tree": "69d9f22a526e687fe2892d327caa3fa6ddd65cf6",
  "parents": [
    "e46b272b6608783ed7aa7b0594871550ce20b849"
  ],
  "author": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Mon Apr 28 02:15:53 2008 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Apr 28 08:58:42 2008 -0700"
  },
  "message": "md: introduce get_priority_stripe() to improve raid456 write performance\n\nImprove write performance by preventing the delayed_list from dumping all its\nstripes onto the handle_list in one shot.  Delayed stripes are now further\ndelayed by being held on the \u0027hold_list\u0027.  The \u0027hold_list\u0027 is bypassed when:\n\n  * a STRIPE_IO_STARTED stripe is found at the head of \u0027handle_list\u0027\n  * \u0027handle_list\u0027 is empty and i/o is being done to satisfy full stripe-width\n    write requests\n  * \u0027bypass_count\u0027 is less than \u0027bypass_threshold\u0027.  By default the threshold\n    is 1, i.e. every other stripe handled is a preread stripe provided the\n    top two conditions are false.\n\nBenchmark data:\nSystem: 2x Xeon 5150, 4x SATA, mem\u003d1GB\nBaseline: 2.6.24-rc7\nConfiguration: mdadm --create /dev/md0 /dev/sd[b-e] -n 4 -l 5 --assume-clean\nTest1: dd if\u003d/dev/zero of\u003d/dev/md0 bs\u003d1024k count\u003d2048\n  * patched:  +33% (stripe_cache_size \u003d 256), +25% (stripe_cache_size \u003d 512)\n\nTest2: tiobench --size 2048 --numruns 5 --block 4096 --block 131072 (XFS)\n  * patched: +13%\n  * patched + preread_bypass_threshold \u003d 0: +37%\n\nChanges since v1:\n* reduce bypass_threshold from (chunk_size / sectors_per_chunk) to (1) and\n  make it configurable.  This defaults to fairness and modest performance\n  gains out of the box.\nChanges since v2:\n* [neilb@suse.de]: kill STRIPE_PRIO_HI and preread_needed as they are not\n  necessary, the important change was clearing STRIPE_DELAYED in\n  add_stripe_bio and this has been moved out to make_request for the hang\n  fix.\n* [neilb@suse.de]: simplify get_priority_stripe\n* [dan.j.williams@intel.com]: reset the bypass_count when -\u003ehold_list is\n  sampled empty (+11%)\n* [dan.j.williams@intel.com]: decrement the bypass_count at the detection\n  of stripes being naturally promoted off of hold_list +2%.  Note, resetting\n  bypass_count instead of decrementing on these events yields +4% but that is\n  probably too aggressive.\nChanges since v3:\n* cosmetic fixups\n\nTested-by: James W. Laferriere \u003cbabydr@baby-dragons.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\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": "396cdd982c26505ee39a577a64a7fb2c7472985e",
      "old_mode": 33188,
      "old_path": "Documentation/md.txt",
      "new_id": "a8b430627473aa243995ab6f6e173b9cf1ff819e",
      "new_mode": 33188,
      "new_path": "Documentation/md.txt"
    },
    {
      "type": "modify",
      "old_id": "4efec467e2f178f13860c53ee83b0e2dd6d15d8f",
      "old_mode": 33188,
      "old_path": "drivers/md/raid5.c",
      "new_id": "45eead6086475b3e7c5386f6008912f2aad963b6",
      "new_mode": 33188,
      "new_path": "drivers/md/raid5.c"
    },
    {
      "type": "modify",
      "old_id": "93678f57ccbe280d3b681aa5c31a2c5049c32a6a",
      "old_mode": 33188,
      "old_path": "include/linux/raid/raid5.h",
      "new_id": "f0827d31ae6fab718158499c10aaa50979527b17",
      "new_mode": 33188,
      "new_path": "include/linux/raid/raid5.h"
    }
  ]
}
