)]}'
{
  "commit": "835bb1298311f372a3387fb40b952b18d90aa9f8",
  "tree": "1a58003158f03397212979727c2f5cfa37ebc4f2",
  "parents": [
    "9ac98284428961bd5be285a6cc1f5e6f5b6644aa"
  ],
  "author": {
    "name": "Jesse Brandeburg",
    "email": "jesse.brandeburg@intel.com",
    "time": "Wed Nov 01 08:48:13 2006 -0800"
  },
  "committer": {
    "name": "Jeff Garzik",
    "email": "jeff@garzik.org",
    "time": "Sat Dec 02 00:12:00 2006 -0500"
  },
  "message": "e1000: add dynamic itr modes\n\nAdd a new dynamic itr algorithm, with 2 modes, and make it the default\noperation mode. This greatly reduces latency and increases small packet\nperformance, at the \"cost\" of some CPU utilization. Bulk traffic\nthroughput is unaffected.\n\nThe driver can limit the amount of interrupts per second that the\nadapter will generate for incoming packets. It does this by writing a\nvalue to the adapter that is based on the maximum amount of interrupts\nthat the adapter will generate per second.\n\nSetting InterruptThrottleRate to a value greater or equal to 100 will\nprogram the adapter to send out a maximum of that many interrupts per\nsecond, even if more packets have come in. This reduces interrupt\nload on the system and can lower CPU utilization under heavy load,\nbut will increase latency as packets are not processed as quickly.\n\nThe default behaviour of the driver previously assumed a static\nInterruptThrottleRate value of 8000, providing a good fallback value\nfor all traffic types,but lacking in small packet performance and\nlatency. The hardware can handle many more small packets per second\nhowever, and for this reason an adaptive interrupt moderation algorithm\nwas implemented.\n\nSince 7.3.x, the driver has two adaptive modes (setting 1 or 3) in\nwhich it dynamically adjusts the InterruptThrottleRate value based on\nthe traffic that it receives. After determining the type of incoming\ntraffic in the last timeframe, it will adjust the InterruptThrottleRate\nto an appropriate value for that traffic.\n\nThe algorithm classifies the incoming traffic every interval into\nclasses.  Once the class is determined, the InterruptThrottleRate\nvalue is adjusted to suit that traffic type the best. There are\nthree classes defined: \"Bulk traffic\", for large amounts of packets\nof normal size; \"Low latency\", for small amounts of traffic and/or\na significant percentage of small packets; and \"Lowest latency\",\nfor almost completely small packets or minimal traffic.\n\nIn dynamic conservative mode, the InterruptThrottleRate value is\nset to 4000 for traffic that falls in class \"Bulk traffic\". If\ntraffic falls in the \"Low latency\" or \"Lowest latency\" class, the\nInterruptThrottleRate is increased stepwise to 20000. This default\nmode is suitable for most applications.\n\nFor situations where low latency is vital such as cluster or\ngrid computing, the algorithm can reduce latency even more when\nInterruptThrottleRate is set to mode 1. In this mode, which operates\nthe same as mode 3, the InterruptThrottleRate will be increased\nstepwise to 70000 for traffic in class \"Lowest latency\".\n\nSetting InterruptThrottleRate to 0 turns off any interrupt moderation\nand may improve small packet latency, but is generally not suitable\nfor bulk throughput traffic.\n\nSigned-off-by: Jesse Brandeburg \u003cjesse.brandeburg@intel.com\u003e\nCc: Rick Jones \u003crick.jones2@hp.com\u003e\nSigned-off-by: Auke Kok \u003cauke-jan.h.kok@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "896ea8a723867500d9bf775b31870ca35b49f6b4",
      "old_mode": 33188,
      "old_path": "drivers/net/e1000/e1000.h",
      "new_id": "f091042b146eaed8d4de0641010cd7a3a3b77e73",
      "new_mode": 33188,
      "new_path": "drivers/net/e1000/e1000.h"
    },
    {
      "type": "modify",
      "old_id": "35e4e32c7702b3c029e0a83c564473b28ba8f41c",
      "old_mode": 33188,
      "old_path": "drivers/net/e1000/e1000_main.c",
      "new_id": "56be5c89363c99e9d8e0e47d8655725532ebbcc4",
      "new_mode": 33188,
      "new_path": "drivers/net/e1000/e1000_main.c"
    },
    {
      "type": "modify",
      "old_id": "e4f88920b46b05b3dc909183f3ea00f59e2ddfc1",
      "old_mode": 33188,
      "old_path": "drivers/net/e1000/e1000_param.c",
      "new_id": "cbfcd7f2889f6fea29232bf6fd2b720efe0fdcda",
      "new_mode": 33188,
      "new_path": "drivers/net/e1000/e1000_param.c"
    }
  ]
}
