net: attempt high order allocations in sock_alloc_send_pskb()
Adding paged frags skbs to af_unix sockets introduced a performance regression on large sends because of additional page allocations, even if each skb could carry at least 100% more payload than before. We can instruct sock_alloc_send_pskb() to attempt high order allocations. Most of the time, it does a single page allocation instead of 8. I added an additional parameter to sock_alloc_send_pskb() to let other users to opt-in for this new feature on followup patches. Tested: Before patch : $ netperf -t STREAM_STREAM STREAM STREAM TEST Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 2304 212992 212992 10.00 46861.15 After patch : $ netperf -t STREAM_STREAM STREAM STREAM TEST Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 2304 212992 212992 10.00 57981.11 Signed-off-by:Eric Dumazet <edumazet@google.com> Cc: David Rientjes <rientjes@google.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
Showing
- drivers/net/macvtap.c 1 addition, 1 deletiondrivers/net/macvtap.c
- drivers/net/tun.c 1 addition, 1 deletiondrivers/net/tun.c
- include/net/sock.h 2 additions, 1 deletioninclude/net/sock.h
- net/core/sock.c 51 additions, 49 deletionsnet/core/sock.c
- net/packet/af_packet.c 1 addition, 1 deletionnet/packet/af_packet.c
- net/unix/af_unix.c 4 additions, 2 deletionsnet/unix/af_unix.c
Please register or sign in to comment