)]}'
{
  "commit": "e98be2d599207c6b31e9bb340d52a231b2f3662d",
  "tree": "3ae28e7d621a6e2ddf8e7462f8d282901c113d5c",
  "parents": [
    "f7d2b1ecd0c714adefc7d3a942ef87beb828a763"
  ],
  "author": {
    "name": "Wu Fengguang",
    "email": "fengguang.wu@intel.com",
    "time": "Sun Aug 29 11:22:30 2010 -0600"
  },
  "committer": {
    "name": "Wu Fengguang",
    "email": "fengguang.wu@intel.com",
    "time": "Sat Jul 09 22:09:01 2011 -0700"
  },
  "message": "writeback: bdi write bandwidth estimation\n\nThe estimation value will start from 100MB/s and adapt to the real\nbandwidth in seconds.\n\nIt tries to update the bandwidth only when disk is fully utilized.\nAny inactive period of more than one second will be skipped.\n\nThe estimated bandwidth will be reflecting how fast the device can\nwriteout when _fully utilized_, and won\u0027t drop to 0 when it goes idle.\nThe value will remain constant at disk idle time. At busy write time, if\nnot considering fluctuations, it will also remain high unless be knocked\ndown by possible concurrent reads that compete for the disk time and\nbandwidth with async writes.\n\nThe estimation is not done purely in the flusher because there is no\nguarantee for write_cache_pages() to return timely to update bandwidth.\n\nThe bdi-\u003eavg_write_bandwidth smoothing is very effective for filtering\nout sudden spikes, however may be a little biased in long term.\n\nThe overheads are low because the bdi bandwidth update only occurs at\n200ms intervals.\n\nThe 200ms update interval is suitable, because it\u0027s not possible to get\nthe real bandwidth for the instance at all, due to large fluctuations.\n\nThe NFS commits can be as large as seconds worth of data. One XFS\ncompletion may be as large as half second worth of data if we are going\nto increase the write chunk to half second worth of data. In ext4,\nfluctuations with time period of around 5 seconds is observed. And there\nis another pattern of irregular periods of up to 20 seconds on SSD tests.\n\nThat\u0027s why we are not only doing the estimation at 200ms intervals, but\nalso averaging them over a period of 3 seconds and then go further to do\nanother level of smoothing in avg_write_bandwidth.\n\nCC: Li Shaohua \u003cshaohua.li@intel.com\u003e\nCC: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2c947da39f6ea276e47aa59037ba7ecfb7642bfb",
      "old_mode": 33188,
      "old_path": "fs/fs-writeback.c",
      "new_id": "5826992910e9b91907aad092c6c4e6df416368ae",
      "new_mode": 33188,
      "new_path": "fs/fs-writeback.c"
    },
    {
      "type": "modify",
      "old_id": "469d56443c638dc07994ead098479b19c08e75a5",
      "old_mode": 33188,
      "old_path": "include/linux/backing-dev.h",
      "new_id": "a008982e7c0817295b01a516b81df477bd2fb957",
      "new_mode": 33188,
      "new_path": "include/linux/backing-dev.h"
    },
    {
      "type": "modify",
      "old_id": "df1b7f18f100e6ba4a228d11c9857fe9fc477ddd",
      "old_mode": 33188,
      "old_path": "include/linux/writeback.h",
      "new_id": "66862f2d90c82b72dae5f90d344dd1d2728f16d9",
      "new_mode": 33188,
      "new_path": "include/linux/writeback.h"
    },
    {
      "type": "modify",
      "old_id": "83f18a1d9d101da595dd8656461feb9103c7c2af",
      "old_mode": 33188,
      "old_path": "mm/backing-dev.c",
      "new_id": "a76cdd160277bc733e09f3a63bae40dbc2c7bb1e",
      "new_mode": 33188,
      "new_path": "mm/backing-dev.c"
    },
    {
      "type": "modify",
      "old_id": "8cd71376c63dc0c95869645e36423a6a08c66678",
      "old_mode": 33188,
      "old_path": "mm/page-writeback.c",
      "new_id": "446bdf7b975b113220f1c9b1666fe4b1cf2296ee",
      "new_mode": 33188,
      "new_path": "mm/page-writeback.c"
    }
  ]
}
