)]}'
{
  "commit": "ec7d2f2cf3a1b76202986519ec4f8ec75b2de232",
  "tree": "177c324eb0cf7e687d1bbd10a6add3a7d5979002",
  "parents": [
    "8753d29fd5daf890004a38c80835e1eb3acda394"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "eric.dumazet@gmail.com",
    "time": "Wed May 05 01:07:37 2010 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Wed May 05 01:07:37 2010 -0700"
  },
  "message": "net: __alloc_skb() speedup\n\nWith following patch I can reach maximum rate of my pktgen+udpsink\nsimulator :\n- \u0027old\u0027 machine : dual quad core E5450  @3.00GHz\n- 64 UDP rx flows (only differ by destination port)\n- RPS enabled, NIC interrupts serviced on cpu0\n- rps dispatched on 7 other cores. (~130.000 IPI per second)\n- SLAB allocator (faster than SLUB in this workload)\n- tg3 NIC\n- 1.080.000 pps without a single drop at NIC level.\n\nIdea is to add two prefetchw() calls in __alloc_skb(), one to prefetch\nfirst sk_buff cache line, the second to prefetch the shinfo part.\n\nAlso using one memset() to initialize all skb_shared_info fields instead\nof one by one to reduce number of instructions, using long word moves.\n\nAll skb_shared_info fields before \u0027dataref\u0027 are cleared in \n__alloc_skb().\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": "746a652b9f6f9525ae3a866fc230a09914efb999",
      "old_mode": 33188,
      "old_path": "include/linux/skbuff.h",
      "new_id": "88d55395a27c6c084d7847d2a5152a90386df1ed",
      "new_mode": 33188,
      "new_path": "include/linux/skbuff.h"
    },
    {
      "type": "modify",
      "old_id": "8b9c109166a7f5a72cd5e863198cad1cd74392ab",
      "old_mode": 33188,
      "old_path": "net/core/skbuff.c",
      "new_id": "a9b0e1f77806a50ed0ae82759244f9b36cb39b85",
      "new_mode": 33188,
      "new_path": "net/core/skbuff.c"
    }
  ]
}
