• Eric Dumazet's avatar
    af_unix: reduce high order page allocations · eb6a2481
    Eric Dumazet authored
    unix_dgram_sendmsg() currently builds linear skbs, and this can stress
    page allocator with high order page allocations. When memory gets
    fragmented, this can eventually fail.
    
    We can try to use order-2 allocations for skb head (SKB_MAX_ALLOC) plus
    up to 16 page fragments to lower pressure on buddy allocator.
    
    This patch has no effect on messages of less than 16064 bytes.
    (on 64bit arches with PAGE_SIZE=4096)
    
    For bigger messages (from 16065 to 81600 bytes), this patch brings
    reliability at the expense of performance penalty because of extra pages
    allocations.
    
    netperf -t DG_STREAM -T 0,2 -- -m 16064 -s 200000
    ->4086040 Messages / 10s
    
    netperf -t DG_STREAM -T 0,2 -- -m 16068 -s 200000
    ->3901747 Messages / 10s
    Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    eb6a2481
af_unix.c 56 KB