)]}'
{
  "commit": "4a8962e21bc505c714fc2508494d4c7dd3fe2d29",
  "tree": "55afdb7bc1f7e03bc910e59a17962e671a031ebc",
  "parents": [
    "95c517c09bad31a03e22f2fdb5f0aa26a490a92d"
  ],
  "author": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Fri Jun 12 22:27:12 2009 -0600"
  },
  "committer": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Fri Jun 12 22:27:12 2009 +0930"
  },
  "message": "lguest: try to batch interrupts on network receive\n\nRather than triggering an interrupt every time, we only trigger an\ninterrupt when there are no more incoming packets (or the recv queue\nis full).\n\nHowever, the overhead of doing the select to figure this out is\nmeasurable: 1M pings goes from 98 to 104 seconds, and 1G Guest-\u003eHost\nTCP goes from 3.69 to 3.94 seconds.  It\u0027s close to the noise though.\n\nI tested various timeouts, including reducing it as the number of\npending packets increased, timing a 1 gigabyte TCP send from Guest -\u003e\nHost and Host -\u003e Guest (GSO disabled, to increase packet rate).\n\n// time tcpblast -o -s 65536 -c 16k 192.168.2.1:9999 \u003e /dev/null\n\nTimeout\t\tGuest-\u003eHost\tPkts/irq\tHost-\u003eGuest\tPkts/irq\nBefore\t\t11.3s\t\t1.0\t\t6.3s\t\t1.0\n0\t\t11.7s\t\t1.0\t\t6.6s\t\t23.5\n1\t\t17.1s\t\t8.8\t\t8.6s\t\t26.0\n1/pending\t13.4s\t\t1.9\t\t6.6s\t\t23.8\n2/pending\t13.6s\t\t2.8\t\t6.6s\t\t24.1\n5/pending\t14.1s\t\t5.0\t\t6.6s\t\t24.4\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "20f8253881b31506865b76a3c888306728c7fb4a",
      "old_mode": 33188,
      "old_path": "Documentation/lguest/lguest.c",
      "new_id": "64110797044adfb0b5c11510bcdba72f46aa2968",
      "new_mode": 33188,
      "new_path": "Documentation/lguest/lguest.c"
    }
  ]
}
