• Eric Wong's avatar
    epoll: trim epitem by one cache line · 39732ca5
    Eric Wong authored
    It is common for epoll users to have thousands of epitems, so saving a
    cache line on every allocation leads to large memory savings.
    
    Since epitem allocations are cache-aligned, reducing sizeof(struct
    epitem) from 136 bytes to 128 bytes will allow it to squeeze under a
    cache line boundary on x86_64.
    
    Via /sys/kernel/slab/eventpoll_epi, I see the following changes on my
    x86_64 Core2 Duo (which has 64-byte cache alignment):
    
    	object_size  :  192 => 128
    	objs_per_slab:   21 =>  32
    
    Also, add a BUILD_BUG_ON() to check for future accidental breakage.
    
    [akpm@linux-foundation.org: use __packed, for all architectures]
    Signed-off-by: default avatarEric Wong <normalperson@yhbt.net>
    Cc: Davide Libenzi <davidel@xmailserver.org>
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    39732ca5
eventpoll.c 55 KB