From: Cong Wang <xiyou.wangcong@gmail.com> To: Willem de Bruijn <willemdebruijn.kernel@gmail.com> Cc: Alexander Duyck <alexander.duyck@gmail.com>, Eric Dumazet <edumazet@google.com>, "Samudrala, Sridhar" <sridhar.samudrala@intel.com>, Linux Kernel Network Developers <netdev@vger.kernel.org> Subject: Re: Three questions about busy poll Date: Mon, 18 Feb 2019 20:30:30 -0800 [thread overview] Message-ID: <CAM_iQpWtg6=qjQ=JFQyEONHujHX0BWEswejtc==RxocHj365uQ@mail.gmail.com> (raw) In-Reply-To: <CA+FuTSc-Oq0XWowxDEYeZ+oT6SG8YZSu5nvzeOO5sUq3v51Lvg@mail.gmail.com> On Fri, Feb 15, 2019 at 2:47 PM Willem de Bruijn <willemdebruijn.kernel@gmail.com> wrote: > > > > > 2. Why there is no socket option for sysctl.net.busy_poll? Clearly > > > > sysctl_net_busy_poll is global and SO_BUSY_POLL only works for > > > > sysctl.net.busy_read. > > > > > > I guess because of how sock_poll works. In that case it is not needed. > > > The poll duration applies more to the pollset than any of the > > > individual sockets, too. > > > > > > Good point, it's probably like struct eventpoll vs. struct epitem. > > > > The reason why I am looking for a per-socket tuning is to minimize > > the impact of setting busy_poll. I don't know if it is possible to somehow > > make this per-socket via epoll interfaces, perhaps fundamentally > > it is impossible? > > I think it may be possible. The way busy_read and busy_poll work > in sock_poll is that the sum of all (per socket tunable) busy_read > durations on the sockets in the pollset is ~bound by (global) busy_poll. Good idea!! I was actually thinking about checking sk->sk_ll_usec ep_set_busy_poll_napi_id(). Your idea sounds better than mine. Maybe we can do both together. :) > > The epoll implementation is restricted in the sense that it polls only > on one napi_id at a time. Alongside setting ep->napi_id in > ep_set_busy_poll_napi_id, we could also set a new ep field takes > the min of the global busy_poll and sk->sk_ll_usec. > > Though I guess you want to be able to poll on a given pollset > without setting the global sysctl_net_busy_poll at all? That > would be a useful feature both for epoll and poll/select. But > definitely requires refining net_busy_loop_on() to optionally > take some state derived from the sockets in the (e)pollset. Yes, or at least give some control to each application. I was thinking about this: diff --git a/fs/eventpoll.c b/fs/eventpoll.c index a5d219d920e7..1b104c8bda5e 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -432,7 +432,7 @@ static inline void ep_set_busy_poll_napi_id(struct epitem *epi) return; sk = sock->sk; - if (!sk) + if (!sk || !sk->sk_ll_usec) return; napi_id = READ_ONCE(sk->sk_napi_id); With this change, busy_poll would rely on either busy_read or SO_BUSY_POLL. Does this make any sense? Thanks.
next prev parent reply other threads:[~2019-02-19 4:30 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-14 20:15 Cong Wang 2019-02-15 0:39 ` Willem de Bruijn 2019-02-15 19:04 ` Cong Wang 2019-02-15 22:46 ` Willem de Bruijn 2019-02-19 4:30 ` Cong Wang [this message] 2019-02-19 17:04 ` Willem de Bruijn [not found] ` <bfaff1c6-1269-1c33-31e1-0a78f78d7214@intel.com> 2019-02-15 19:18 ` Cong Wang 2019-02-22 20:00 ` Samudrala, Sridhar
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAM_iQpWtg6=qjQ=JFQyEONHujHX0BWEswejtc==RxocHj365uQ@mail.gmail.com' \ --to=xiyou.wangcong@gmail.com \ --cc=alexander.duyck@gmail.com \ --cc=edumazet@google.com \ --cc=netdev@vger.kernel.org \ --cc=sridhar.samudrala@intel.com \ --cc=willemdebruijn.kernel@gmail.com \ --subject='Re: Three questions about busy poll' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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).