linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net-next PATCH v2 0/8] Add busy poll support for epoll
@ 2017-03-23 21:36 Alexander Duyck
       [not found] ` <20170323211820.12615.88907.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
                   ` (8 more replies)
  0 siblings, 9 replies; 29+ messages in thread
From: Alexander Duyck @ 2017-03-23 21:36 UTC (permalink / raw)
  To: netdev-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: sridhar.samudrala-ral2JQCrhuEAvxtiuMwx3w,
	edumazet-hpIqsD4AKlfQT0dZR+AlfA, davem-fT/PcQaiUtIeIZ0/mPfg9Q,
	linux-api-u79uwXL29TY76Z2rM5mHXA

This is my second pass at trying to add support for busy polling when using
epoll. It is pretty much a full rewrite as I have made serious changes to
most of the patches.

In the v1 series I had submitted we only allowed epoll to make use of busy
poll when all NAPI IDs were the same. I gave this some more thought and
after making several other changes based on feedback from Eric Dumazet I
decided to try changing the main concept a bit and instead we will now
attempt to busy poll on the NAPI ID of the last socket added to the ready
list. By doing it this way we are able to take advantage of the changes
Eric has already made so that we get woken up by the softirq, we then pull
packets via busy poll, and will return to the softirq until we are woken up
and a new socket has been added to the ready list.

Most of the changes in this set authored by me are meant to be cleanup or
fixes for various things. For example, I am trying to make it so that we
don't perform hash look-ups for the NAPI instance when we are only working
with sender_cpu and the like.

The most complicated change of the set is probably the clean-ups for the
timeout. I realized that the timeout could potentially get into a state
where it would never timeout if the local_clock() was approaching a
rollover and the added busy poll usecs interval would be enough to roll it
over.  Because we were shifting the value you would never be able to get
time_after to actually trigger.

At the heart of this set is the last 3 patches which enable epoll support
and add support for obtaining the NAPI ID of a given socket.  With these
It becomes possible for an application to make use of epoll and get optimal
busy poll utilization by stacking multiple sockets with the same NAPI ID on
the same epoll context.

---

Alexander Duyck (5):
      net: Busy polling should ignore sender CPUs
      tcp: Record Rx hash and NAPI ID in tcp_child_process
      net: Only define skb_mark_napi_id in one spot instead of two
      net: Change return type of sk_busy_loop from bool to void
      net: Track start of busy loop instead of when it should end

Sridhar Samudrala (3):
      net: Commonize busy polling code to focus on napi_id instead of socket
      epoll: Add busy poll support to epoll with socket fds.
      net: Introduce SO_INCOMING_NAPI_ID


 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    |    1 
 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                         |   93 +++++++++++++++++++++++++++
 fs/select.c                            |   16 ++---
 include/net/busy_poll.h                |  112 ++++++++++++++++++++------------
 include/uapi/asm-generic/socket.h      |    2 +
 net/core/datagram.c                    |    8 ++
 net/core/dev.c                         |   42 ++++++------
 net/core/sock.c                        |   23 +++++++
 net/core/sysctl_net_core.c             |   11 +++
 net/ipv4/tcp_ipv4.c                    |    2 -
 net/ipv4/tcp_minisocks.c               |    4 +
 net/ipv6/tcp_ipv6.c                    |    2 -
 net/sctp/socket.c                      |    9 ++-
 24 files changed, 264 insertions(+), 83 deletions(-)

--

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2017-03-24 15:48 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-23 21:36 [net-next PATCH v2 0/8] Add busy poll support for epoll Alexander Duyck
     [not found] ` <20170323211820.12615.88907.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2017-03-23 21:36   ` [net-next PATCH v2 1/8] net: Busy polling should ignore sender CPUs Alexander Duyck
2017-03-23 22:05     ` Eric Dumazet
2017-03-23 21:36 ` [net-next PATCH v2 2/8] tcp: Record Rx hash and NAPI ID in tcp_child_process Alexander Duyck
     [not found]   ` <20170323213644.12615.27158.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2017-03-24  1:00     ` Eric Dumazet
2017-03-23 21:36 ` [net-next PATCH v2 3/8] net: Only define skb_mark_napi_id in one spot instead of two Alexander Duyck
     [not found]   ` <20170323213651.12615.62895.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2017-03-24  1:02     ` Eric Dumazet
2017-03-23 21:37 ` [net-next PATCH v2 4/8] net: Change return type of sk_busy_loop from bool to void Alexander Duyck
     [not found]   ` <20170323213715.12615.49246.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2017-03-24  1:02     ` Eric Dumazet
2017-03-23 21:37 ` [net-next PATCH v2 5/8] net: Track start of busy loop instead of when it should end Alexander Duyck
2017-03-24  1:24   ` Eric Dumazet
2017-03-24  3:42     ` Alexander Duyck
     [not found]       ` <CAKgT0Ue+UFOAhwxN-EOjWYZa9YZc2QaT5gvoLap70COs0rF7NA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-24  4:27         ` Eric Dumazet
2017-03-24  4:38           ` Eric Dumazet
2017-03-24  5:55           ` Alexander Duyck
     [not found]             ` <CAKgT0UfQPLqHtZ_SjanbLoG6t5f36C4nsORuw6yjLT0xZrEoEQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-24 11:16               ` Eric Dumazet
     [not found]                 ` <1490354210.9687.44.camel-XN9IlZ5yJG9HTL0Zs8A6p+yfmBU6pStAUsxypvmhUTTZJqsBc5GL+g@public.gmane.org>
2017-03-24 15:48                   ` Alexander Duyck
2017-03-23 21:37 ` [net-next PATCH v2 6/8] net: Commonize busy polling code to focus on napi_id instead of socket Alexander Duyck
     [not found]   ` <20170323213749.12615.38165.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2017-03-23 22:25     ` Eric Dumazet
2017-03-23 21:37 ` [net-next PATCH v2 7/8] epoll: Add busy poll support to epoll with socket fds Alexander Duyck
2017-03-23 21:38 ` [net-next PATCH v2 8/8] net: Introduce SO_INCOMING_NAPI_ID Alexander Duyck
     [not found]   ` <20170323213802.12615.58216.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2017-03-23 22:22     ` Eric Dumazet
2017-03-23 22:43     ` Andy Lutomirski
2017-03-24  0:58       ` Alexander Duyck
     [not found]         ` <CAKgT0UcHJVycQ3+h09L2Ph=TVncqHPJ6dZpicUgBo7TaFTN7yw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-24  4:47           ` Andy Lutomirski
2017-03-24  5:07             ` Eric Dumazet
2017-03-23 22:07 ` [net-next PATCH v2 0/8] Add busy poll support for epoll Alexei Starovoitov
     [not found]   ` <20170323220721.GA62356-+o4/htvd0TDFYCXBM6kdu7fOX0fSgVTm@public.gmane.org>
2017-03-23 22:38     ` Alexander Duyck
     [not found]       ` <CAKgT0Uctdf4N-w72EY8T5Zfw=QCSCgAesXdgOh-HUYdD=Aq9AA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-23 22:49         ` Eric Dumazet

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).