)]}'
{
  "commit": "84b5fb198024c4cfd7ab8f55f736d5e30a7a67ec",
  "tree": "b11a8033c8b44194d7e029a37d92e961832a0f50",
  "parents": [
    "bcc8a549f85060b88d640b619dc6db5362c115ab"
  ],
  "author": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Tue Mar 07 13:57:46 2023 +0100"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Thu Mar 23 10:08:46 2023 +0100"
  },
  "message": "net: dst: Switch to rcuref_t reference counting\n\nUnder high contention dst_entry::__refcnt becomes a significant bottleneck.\n\natomic_inc_not_zero() is implemented with a cmpxchg() loop, which goes into\nhigh retry rates on contention.\n\nSwitch the reference count to rcuref_t which results in a significant\nperformance gain. Rename the reference count member to __rcuref to reflect\nthe change.\n\nThe gain depends on the micro-architecture and the number of concurrent\noperations and has been measured in the range of +25% to +130% with a\nlocalhost memtier/memcached benchmark which amplifies the problem\nmassively.\n\nRunning the memtier/memcached benchmark over a real (1Gb) network\nconnection the conversion on top of the false sharing fix for struct\ndst_entry::__refcnt results in a total gain in the 2%-5% range over the\nupstream baseline.\n\nReported-by: Wangyang Guo \u003cwangyang.guo@intel.com\u003e\nReported-by: Arjan Van De Ven \u003carjan.van.de.ven@intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLink: https://lore.kernel.org/r/20230307125538.989175656@linutronix.de\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "81f2279ea911ab2222e15f55c18c291c740902c6",
      "old_mode": 33188,
      "old_path": "include/net/dst.h",
      "new_id": "78884429deed82cc4872ff30404af69aee11a333",
      "new_mode": 33188,
      "new_path": "include/net/dst.h"
    },
    {
      "type": "modify",
      "old_id": "573f2bf7e0de72e0c8ee2202db155330e4b6ad28",
      "old_mode": 33188,
      "old_path": "include/net/sock.h",
      "new_id": "5edf0038867ce939544a7a22bf4a4ffe23d3b114",
      "new_mode": 33188,
      "new_path": "include/net/sock.h"
    },
    {
      "type": "modify",
      "old_id": "8c69f0c95a8ed4d92b6991d05e2c0d8133c9425c",
      "old_mode": 33188,
      "old_path": "net/bridge/br_nf_core.c",
      "new_id": "98aea5485aaef4f32c17b3266a87f7661e72d157",
      "new_mode": 33188,
      "new_path": "net/bridge/br_nf_core.c"
    },
    {
      "type": "modify",
      "old_id": "31c08a3386d3d75239cd2202545ed227ef66b54e",
      "old_mode": 33188,
      "old_path": "net/core/dst.c",
      "new_id": "3247e84045caeb97ab4284e5a8a614e4ccfc77b1",
      "new_mode": 33188,
      "new_path": "net/core/dst.c"
    },
    {
      "type": "modify",
      "old_id": "5d8eb57867a96fa1730fcafd95f0801fbfc76188",
      "old_mode": 33188,
      "old_path": "net/core/rtnetlink.c",
      "new_id": "66239c1eaee9aabede1a43ae6132a049754ef90a",
      "new_mode": 33188,
      "new_path": "net/core/rtnetlink.c"
    },
    {
      "type": "modify",
      "old_id": "5d502be409d2ff73564dbb1171b4eab76d7a31cd",
      "old_mode": 33188,
      "old_path": "net/ipv6/route.c",
      "new_id": "b9d22a0a6c0939035c323039ccf926bd359c2028",
      "new_mode": 33188,
      "new_path": "net/ipv6/route.c"
    },
    {
      "type": "modify",
      "old_id": "80448885c3d717dfa99bb224c7bda56e74c33c24",
      "old_mode": 33188,
      "old_path": "net/netfilter/ipvs/ip_vs_xmit.c",
      "new_id": "99c349c0d96813ab1f2e87ce01f3a156013248ae",
      "new_mode": 33188,
      "new_path": "net/netfilter/ipvs/ip_vs_xmit.c"
    }
  ]
}
