SLUB: Do not pass 8k objects through to the page allocator
authorPekka Enberg <penberg@cs.helsinki.fi>
Fri, 20 Feb 2009 10:21:33 +0000 (12:21 +0200)
committerPekka Enberg <penberg@cs.helsinki.fi>
Fri, 20 Feb 2009 10:25:47 +0000 (12:25 +0200)
commit51735a7ca67531267a27b57e5fe20f7815192f9c
tree35c2f72b18b168f8f9c8d7f7b1172422f0a16238
parentffadd4d0feb5376c82dc3a4104731b7ce2794edc
SLUB: Do not pass 8k objects through to the page allocator

Increase the maximum object size in SLUB so that 8k objects are not
passed through to the page allocator anymore. The network stack uses 8k
objects for performance critical operations.

The patch is motivated by a SLAB vs. SLUB regression in the netperf
benchmark. The problem is that the kfree(skb->head) call in
skb_release_data() that is subject to page allocator pass-through as the
size passed to __alloc_skb() is larger than 4 KB in this test.

As explained by Yanmin Zhang:

  I use 2.6.29-rc2 kernel to run netperf UDP-U-4k CPU_NUM client/server
  pair loopback testing on x86-64 machines. Comparing with SLUB, SLAB's
  result is about 2.3 times of SLUB's. After applying the reverting patch,
  the result difference between SLUB and SLAB becomes 1% which we might
  consider as fluctuation.

[ penberg@cs.helsinki.fi: fix oops in kmalloc() ]
Reported-by: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>
Tested-by: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>
Signed-off-by: Christoph Lameter <cl@linux-foundation.org>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
include/linux/slub_def.h