Re: [net-next PATCH 0/5] Add busy poll support for epoll under certain circumstances
From: Michael Kerrisk <hidden>
Date: 2017-03-18 11:46:43
Also in:
lkml, netdev
[CC += linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] Hello Alexander Since this is a kernel-user-space API change, please CC linux-api@ (and on future iterations of the patch). The kernel source file Documentation/SubmitChecklist notes that all Linux kernel patches that change userspace interfaces should be CCed to linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, so that the various parties who are interested in API changes are informed. For further information, see https://www.kernel.org/doc/man-pages/linux-api-ml.html Thanks, Michael On Thu, Mar 16, 2017 at 7:32 PM, Alexander Duyck [off-list ref] wrote:
This patch series is meant to add busy polling support to epoll when all of
the sockets on a given epoll are either local or are being sourced by the
same NAPI ID.
In order to support this the first two patches clean up a few issues we
found with the NAPI ID tracking and infrastructure.
In the third patch we introduce SO_INCOMING_NAPI_ID so that applications
have a means of trying to sort their incoming sockets to identify which
requests should be routed where in order to keep the epoll listener aligned
to a given Rx queue without having to rely on IRQ pinning.
Finally the last two patches refactor the existing busy poll infrastructure
to make it so that we can call it without necessarily needing a socket, and
enable the bits needed to support epoll when all of the sockets on the
epoll either share the same NAPI ID, or simply are reporting no NAPI ID.
---
Sridhar Samudrala (5):
net: Do not record sender_cpu as napi_id in socket receive paths
net: Call sk_mark_napi_id() in the ACK receive path
net: Introduce SO_INCOMING_NAPI_ID
net: Commonize busy polling code to focus on napi_id instead of socket
epoll: Add busy poll support to epoll with socket fds.
arch/alpha/include/uapi/asm/socket.h | 2 +
arch/avr32/include/uapi/asm/socket.h | 2 +
arch/frv/include/uapi/asm/socket.h | 2 +
arch/ia64/include/uapi/asm/socket.h | 2 +
arch/m32r/include/uapi/asm/socket.h | 2 +
arch/mips/include/uapi/asm/socket.h | 2 +
arch/mn10300/include/uapi/asm/socket.h | 2 +
arch/parisc/include/uapi/asm/socket.h | 2 +
arch/powerpc/include/uapi/asm/socket.h | 2 +
arch/s390/include/uapi/asm/socket.h | 2 +
arch/sparc/include/uapi/asm/socket.h | 2 +
arch/xtensa/include/uapi/asm/socket.h | 2 +
fs/eventpoll.c | 115 ++++++++++++++++++++++++++++++++
include/net/busy_poll.h | 14 +++-
include/uapi/asm-generic/socket.h | 2 +
net/core/dev.c | 16 ++--
net/core/sock.c | 22 ++++++
net/ipv4/tcp_ipv4.c | 1
18 files changed, 183 insertions(+), 11 deletions(-)
---- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Author of "The Linux Programming Interface", http://blog.man7.org/