Skip to content
  • Eric Dumazet's avatar
    [PATCH] reorder struct pipe_buf_operations · 6a8ba9d1
    Eric Dumazet authored
    
    
    Fields of struct pipe_buf_operations have not a precise layout (ie not
    optimized to fit cache lines nor reduce cache line ping pongs)
    
    The bufs[] array is *large* and is placed near the beginning of the
    structure, so all following fields have a large offset.  This is
    unfortunate because many archs have smaller instructions when using small
    offsets relative to a base register.  On x86 for example, 7 bits offsets
    have smaller instruction lengths.
    
    Moving bufs[] at the end of pipe_buf_operations permits all fields to have
    small offsets, and reduce text size, and icache pressure.
    
    # size vmlinux.pre vmlinux
        text    data     bss     dec     hex filename
    3268989  664356  492196 4425541  438745 vmlinux.pre
    3268765  664356  492196 4425317  438665 vmlinux
    
    So this patch reduces text size by 224 bytes on my x86_64 machine. Similar
    results on ia32.
    
    Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    6a8ba9d1