linux/include
Eric Dumazet dbca9b2750 [NET]: change layout of ehash table
ehash table layout is currently this one :

First half of this table is used by sockets not in TIME_WAIT state
Second half of it is used by sockets in TIME_WAIT state.

This is non optimal because of for a given hash or socket, the two chain heads 
are located in separate cache lines.
Moreover the locks of the second half are never used.

If instead of this halving, we use two list heads in inet_ehash_bucket instead 
of only one, we probably can avoid one cache miss, and reduce ram usage, 
particularly if sizeof(rwlock_t) is big (various CONFIG_DEBUG_SPINLOCK, 
CONFIG_DEBUG_LOCK_ALLOC settings). So we still halves the table but we keep 
together related chains to speedup lookups and socket state change.

In this patch I did not try to align struct inet_ehash_bucket, but a future 
patch could try to make this structure have a convenient size (a power of two 
or a multiple of L1_CACHE_SIZE).
I guess rwlock will just vanish as soon as RCU is plugged into ehash :) , so 
maybe we dont need to scratch our heads to align the bucket...

Note : In case struct inet_ehash_bucket is not a power of two, we could 
probably change alloc_large_system_hash() (in case it use __get_free_pages()) 
to free the unused space. It currently allocates a big zone, but the last 
quarter of it could be freed. Again, this should be a temporary 'problem'.

Patch tested on ipv4 tcp only, but should be OK for IPV6 and DCCP.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-02-08 14:16:46 -08:00
..
acpi Pull sysfs into test branch 2007-02-03 01:14:35 -05:00
asm-alpha PCI: make isa_bridge Alpha-only 2007-02-07 15:50:06 -08:00
asm-arm [ARM] 4111/1: Allow VFP to work with thread migration on SMP 2007-01-25 16:35:29 +00:00
asm-arm26 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-avr32 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-cris [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-frv [PATCH] fix frv headers_check 2007-02-01 16:17:05 -08:00
asm-generic Fix Maple PATA IRQ assignment. 2007-01-26 17:27:40 -05:00
asm-h8300 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-i386 ACPICA: Allow ACPI id to be u32 instead of u8. 2007-02-02 21:14:31 -05:00
asm-ia64 Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2007-02-07 19:23:44 -08:00
asm-m32r [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-m68k [PATCH] m68k: uaccess.h needs sched.h 2007-01-30 08:26:45 -08:00
asm-m68knommu [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-mips [MIPS] Comment fix 2007-02-06 16:53:24 +00:00
asm-parisc [ARM] pass vma for flush_anon_page() 2007-01-08 19:49:54 +00:00
asm-powerpc [POWERPC] Add mpc52xx/lite5200 PCI support 2007-02-08 15:29:22 +11:00
asm-ppc [POWERPC] Compile fixes for arch/powerpc dcr code 2007-02-07 14:03:23 +11:00
asm-s390 [S390] Mark kernel text section read-only. 2007-02-05 21:18:41 +01:00
asm-sh [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-sh64 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-sparc [SPARC32]: Fix over-optimization by GCC near ip_fast_csum. 2007-02-01 20:24:35 -08:00
asm-sparc64 [SPARC64]: Fix of_iounmap() region release. 2006-12-31 14:06:05 -08:00
asm-um [PATCH] uml-i386: fix build breakage with CONFIG_HIGHMEM 2007-02-01 16:17:06 -08:00
asm-v850 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-x86_64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2007-02-07 15:36:08 -08:00
asm-xtensa [PATCH] FD_ZERO build fix 2007-01-11 18:18:22 -08:00
crypto [CRYPTO] lib: table driven multiplications in GF(2^128) 2006-12-06 18:38:55 -08:00
keys
linux [S390]: Add AF_IUCV socket support 2007-02-08 13:51:54 -08:00
math-emu
media V4L/DVB (5001): Add two required headers on kernel 2.6.20-rc1 2006-12-27 14:20:46 -02:00
mtd
net [NET]: change layout of ehash table 2007-02-08 14:16:46 -08:00
pcmcia Driver core: convert pcmcia code to use struct device 2007-02-07 10:37:11 -08:00
rdma IB: Make sure struct ib_user_mad.data is aligned 2007-02-04 14:11:56 -08:00
rxrpc
scsi [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
sound [PATCH] ALSA: Fix sysfs breakage 2007-01-29 14:32:53 -08:00
video [PATCH] sstfb: add sysfs interface 2006-12-13 09:05:55 -08:00
Kbuild