• Eric Dumazet's avatar
    net: add high_order_alloc_disable sysctl/static key · ce27ec60
    Eric Dumazet authored
    >From linux-3.7, (commit 5640f768 "net: use a per task frag
    allocator") TCP sendmsg() has preferred using order-3 allocations.
    
    While it gives good results for most cases, we had reports
    that heavy uses of TCP over loopback were hitting a spinlock
    contention in page allocations/freeing.
    
    This commits adds a sysctl so that admins can opt-in
    for order-0 allocations. Hopefully mm layer might optimize
    order-3 allocations in the future since it could give us
    a nice boost  (see 8 lines of following benchmark)
    
    The following benchmark shows a win when more than 8 TCP_STREAM
    threads are running (56 x86 cores server in my tests)
    
    for thr in {1..30}
    do
     sysctl -wq net.core.high_order_alloc_disable=0
     T0=`./super_netperf $thr -H 127.0.0.1 -l 15`
     sysctl -wq net.core.high_order_alloc_disable=1
     T1=`./super_netperf $thr -H 127.0.0.1 -l 15`
     echo $thr:$T0:$T1
    done
    
    1: 49979: 37267
    2: 98745: 76286
    3: 141088: 110051
    4: 177414: 144772
    5: 197587: 173563
    6: 215377: 208448
    7: 241061: 234087
    8: 267155: 263373
    9: 295069: 297402
    10: 312393: 335213
    11: 340462: 368778
    12: 371366: 403954
    13: 412344: 443713
    14: 426617: 473580
    15: 474418: 507861
    16: 503261: 538539
    17: 522331: 563096
    18: 532409: 567084
    19: 550824: 605240
    20: 525493: 641988
    21: 564574: 665843
    22: 567349: 690868
    23: 583846: 710917
    24: 588715: 736306
    25: 603212: 763494
    26: 604083: 792654
    27: 602241: 796450
    28: 604291: 797993
    29: 611610: 833249
    30: 577356: 841062
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ce27ec60
sock.c 85.7 KB