)]}'
{
  "commit": "c7d4426a98a5f6654cd0b4b33d9dab2e77192c18",
  "tree": "0db2524e6f3f742861765dd6aa696a9271767056",
  "parents": [
    "9a7241c21b06c3a3f8ebcf3e347bd68556369da7"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "eric.dumazet@gmail.com",
    "time": "Sun Oct 03 22:17:54 2010 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Sun Oct 03 22:17:54 2010 -0700"
  },
  "message": "net: introduce DST_NOCACHE flag\n\nWhile doing stress tests with IP route cache disabled, and multi queue\ndevices, I noticed a very high contention on one rwlock used in\nneighbour code.\n\nWhen many cpus are trying to send frames (possibly using a high\nperformance multiqueue device) to the same neighbour, they fight for the\nneigh-\u003elock rwlock in order to call neigh_hh_init(), and fight on\nhh-\u003ehh_refcnt (a pair of atomic_inc/atomic_dec_and_test())\n\nBut we dont need to call neigh_hh_init() for dst that are used only\nonce. It costs four atomic operations at least, on two contended cache\nlines, plus the high contention on neigh-\u003elock rwlock.\n\nIntroduce a new dst flag, DST_NOCACHE, that is set when dst was not\ninserted in route cache.\n\nWith the stress test bench, sending 160000000 frames on one neighbour,\nresults are :\n\nBefore patch:\n\nreal\t2m28.406s\nuser\t0m11.781s\nsys\t36m17.964s\n\n\nAfter patch:\n\nreal\t1m26.532s\nuser\t0m12.185s\nsys\t20m3.903s\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aa53fbc34b2be420551cc7b4d2bba590bb9a968e",
      "old_mode": 33188,
      "old_path": "include/net/dst.h",
      "new_id": "a217c838ec0dc649463a999c5c4d55cf6d53585d",
      "new_mode": 33188,
      "new_path": "include/net/dst.h"
    },
    {
      "type": "modify",
      "old_id": "96b1a749abb4647cb5d975c3dcb3fb2294c51cc1",
      "old_mode": 33188,
      "old_path": "net/core/neighbour.c",
      "new_id": "b142a0d76072d55d490d5e191b2492ba8682941f",
      "new_mode": 33188,
      "new_path": "net/core/neighbour.c"
    },
    {
      "type": "modify",
      "old_id": "a61acea975f10a2ae2490070a1da284d7ff4f518",
      "old_mode": 33188,
      "old_path": "net/ipv4/route.c",
      "new_id": "c3cb8bd23638490c9cedd7ca027a2f0e80c4082a",
      "new_mode": 33188,
      "new_path": "net/ipv4/route.c"
    }
  ]
}
