net: Add sendmmsg socket system call
This patch adds a multiple message send syscall and is the send version of the existing recvmmsg syscall. This is heavily based on the patch by Arnaldo that added recvmmsg. I wrote a microbenchmark to test the performance gains of using this new syscall: http://ozlabs.org/~anton/junkcode/sendmmsg_test.c The test was run on a ppc64 box with a 10 Gbit network card. The benchmark can send both UDP and RAW ethernet packets. 64B UDP batch pkts/sec 1 804570 2 872800 (+ 8 %) 4 916556 (+14 %) 8 939712 (+17 %) 16 952688 (+18 %) 32 956448 (+19 %) 64 964800 (+20 %) 64B raw socket batch pkts/sec 1 1201449 2 1350028 (+12 %) 4 1461416 (+22 %) 8 1513080 (+26 %) 16 1541216 (+28 %) 32 1553440 (+29 %) 64 1557888 (+30 %) We see a 20% improvement in throughput on UDP send and 30% on raw socket send. [ Add sparc syscall entries. -DaveM ] Signed-off-by:Anton Blanchard <anton@samba.org> Signed-off-by:
David S. Miller <davem@davemloft.net>
Showing
- arch/powerpc/include/asm/systbl.h 1 addition, 0 deletionsarch/powerpc/include/asm/systbl.h
- arch/powerpc/include/asm/unistd.h 2 additions, 1 deletionarch/powerpc/include/asm/unistd.h
- arch/sparc/include/asm/unistd.h 2 additions, 1 deletionarch/sparc/include/asm/unistd.h
- arch/sparc/kernel/systbls_32.S 1 addition, 1 deletionarch/sparc/kernel/systbls_32.S
- arch/sparc/kernel/systbls_64.S 2 additions, 2 deletionsarch/sparc/kernel/systbls_64.S
- arch/x86/ia32/ia32entry.S 1 addition, 0 deletionsarch/x86/ia32/ia32entry.S
- arch/x86/include/asm/unistd_32.h 2 additions, 1 deletionarch/x86/include/asm/unistd_32.h
- arch/x86/include/asm/unistd_64.h 2 additions, 0 deletionsarch/x86/include/asm/unistd_64.h
- arch/x86/kernel/syscall_table_32.S 1 addition, 0 deletionsarch/x86/kernel/syscall_table_32.S
- include/linux/net.h 1 addition, 0 deletionsinclude/linux/net.h
- include/linux/socket.h 2 additions, 0 deletionsinclude/linux/socket.h
- include/linux/syscalls.h 2 additions, 0 deletionsinclude/linux/syscalls.h
- include/net/compat.h 2 additions, 0 deletionsinclude/net/compat.h
- kernel/sys_ni.c 2 additions, 0 deletionskernel/sys_ni.c
- net/compat.c 13 additions, 3 deletionsnet/compat.c
- net/socket.c 156 additions, 43 deletionsnet/socket.c
Loading
Please register or sign in to comment