From: Eliezer Tamir <eliezer.tamir@linux.intel.com>
To: Amir Vadai <amirv@mellanox.com>
Cc: David Miller <davem@davemloft.net>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
Jesse Brandeburg <jesse.brandeburg@intel.com>,
Don Skidmore <donald.c.skidmore@intel.com>,
e1000-devel@lists.sourceforge.net,
Willem de Bruijn <willemb@google.com>,
Eric Dumazet <erdnetdev@gmail.com>,
Ben Hutchings <bhutchings@solarflare.com>,
Andi Kleen <andi@firstfloor.org>, HPA <hpa@zytor.com>,
Eilon Greenstien <eilong@broadcom.com>,
Or Gerlitz <or.gerlitz@gmail.com>,
Alex Rosenbaum <alexr@mellanox.com>,
Eliezer Tamir <eliezer@tamir.org.il>
Subject: Re: [PATCH v7 net-next 2/5] net: implement support for low latency socket polling
Date: Thu, 30 May 2013 23:01:13 +0300 [thread overview]
Message-ID: <51A7B009.3030709@linux.intel.com> (raw)
In-Reply-To: <51A76B2F.8010904@mellanox.com>
On 30/05/2013 18:07, Amir Vadai wrote:
> On 30/05/2013 14:41, Eliezer Tamir wrote:
>> diff --git a/fs/select.c b/fs/select.c
>> @@ -486,6 +488,8 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
>> break;
>> }
>>
>> + if (can_poll_ll(ll_time))
>> + continue;
> I don't see here discrimination between sockets that you want to poll
> and other sockets.
> So it means that select will busy poll every type of file descriptor
> instead of going to sleep.
> Should have a condition with something like sk_valid_ll()
As I said earlier, select and poll are far from complete.
We are working on this.
Right now when you turn this on, all sockets get the same treatment.
sk_valid_ll() can't work here, because we don't have a single socket to
work with.
At the moment, I think the right way to solve this might be to add
new flags to poll.h So that select/poll can signal to sock_poll
that it wants to busy-wait and sock_poll can tell select/poll that
it has found a socket that can support it.
Remember that the information is dynamic so we can't know in advance
which sockets can busy-poll.
If anyone else has a suggestion I would really like to hear it.
>
>> +static inline void sk_mark_ll(struct sock *sk, struct sk_buff *skb)
>> +{
>> +}
>> +
>> +static inline bool can_poll_ll(unsigned long end_time)
> should use here cycles_t too.
yes
>
>> +{
>> + return false;
>> +}
>> +
>> +#endif /* CONFIG_NET_LL_RX_POLL */
>> +#endif /* _LINUX_NET_LL_POLL_H */
>
>
> Also, something general about this patch. I think you should split out
> to separate patches all the users of the feature, like you did for TCP.
> I would suggest small patches for UDP, select and poll.
Splitting out the users of the features as you call it will only move
out about 30 lines of patch, I think it will make reviewing harder since
you will not be able to see the whole picture in one patch.
But if anyone else thinks this is a good idea, I will do it.
-Eliezer
WARNING: multiple messages have this Message-ID (diff)
From: Eliezer Tamir <eliezer.tamir@linux.intel.com>
To: Amir Vadai <amirv@mellanox.com>
Cc: Willem de Bruijn <willemb@google.com>,
Or Gerlitz <or.gerlitz@gmail.com>,
e1000-devel@lists.sourceforge.net, netdev@vger.kernel.org,
HPA <hpa@zytor.com>,
Jesse Brandeburg <jesse.brandeburg@intel.com>,
Alex Rosenbaum <alexr@mellanox.com>,
linux-kernel@vger.kernel.org,
Eliezer Tamir <eliezer@tamir.org.il>,
Andi Kleen <andi@firstfloor.org>,
Ben Hutchings <bhutchings@solarflare.com>,
Eric Dumazet <erdnetdev@gmail.com>,
Eilon Greenstien <eilong@broadcom.com>,
David Miller <davem@davemloft.net>
Subject: Re: [PATCH v7 net-next 2/5] net: implement support for low latency socket polling
Date: Thu, 30 May 2013 23:01:13 +0300 [thread overview]
Message-ID: <51A7B009.3030709@linux.intel.com> (raw)
In-Reply-To: <51A76B2F.8010904@mellanox.com>
On 30/05/2013 18:07, Amir Vadai wrote:
> On 30/05/2013 14:41, Eliezer Tamir wrote:
>> diff --git a/fs/select.c b/fs/select.c
>> @@ -486,6 +488,8 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
>> break;
>> }
>>
>> + if (can_poll_ll(ll_time))
>> + continue;
> I don't see here discrimination between sockets that you want to poll
> and other sockets.
> So it means that select will busy poll every type of file descriptor
> instead of going to sleep.
> Should have a condition with something like sk_valid_ll()
As I said earlier, select and poll are far from complete.
We are working on this.
Right now when you turn this on, all sockets get the same treatment.
sk_valid_ll() can't work here, because we don't have a single socket to
work with.
At the moment, I think the right way to solve this might be to add
new flags to poll.h So that select/poll can signal to sock_poll
that it wants to busy-wait and sock_poll can tell select/poll that
it has found a socket that can support it.
Remember that the information is dynamic so we can't know in advance
which sockets can busy-poll.
If anyone else has a suggestion I would really like to hear it.
>
>> +static inline void sk_mark_ll(struct sock *sk, struct sk_buff *skb)
>> +{
>> +}
>> +
>> +static inline bool can_poll_ll(unsigned long end_time)
> should use here cycles_t too.
yes
>
>> +{
>> + return false;
>> +}
>> +
>> +#endif /* CONFIG_NET_LL_RX_POLL */
>> +#endif /* _LINUX_NET_LL_POLL_H */
>
>
> Also, something general about this patch. I think you should split out
> to separate patches all the users of the feature, like you did for TCP.
> I would suggest small patches for UDP, select and poll.
Splitting out the users of the features as you call it will only move
out about 30 lines of patch, I think it will make reviewing harder since
you will not be able to see the whole picture in one patch.
But if anyone else thinks this is a good idea, I will do it.
-Eliezer
------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
next prev parent reply other threads:[~2013-05-30 20:01 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-30 11:40 [PATCH v7 net-next 0/5] net: low latency Ethernet device polling Eliezer Tamir
2013-05-30 11:40 ` [PATCH v7 net-next 1/5] net: add napi_id and hash Eliezer Tamir
2013-05-30 11:40 ` Eliezer Tamir
2013-05-30 11:41 ` [PATCH v7 net-next 2/5] net: implement support for low latency socket polling Eliezer Tamir
2013-05-30 11:41 ` Eliezer Tamir
2013-05-30 15:07 ` Amir Vadai
2013-05-30 20:01 ` Eliezer Tamir [this message]
2013-05-30 20:01 ` Eliezer Tamir
2013-05-30 11:41 ` [PATCH v7 net-next 3/5] tcp: add TCP support for low latency receive poll Eliezer Tamir
2013-05-30 11:41 ` Eliezer Tamir
2013-05-30 11:41 ` [PATCH v7 net-next 4/5] ixgbe: Add support for ndo_ll_poll Eliezer Tamir
2013-05-30 11:41 ` Eliezer Tamir
2013-05-31 3:32 ` Cong Wang
2013-05-31 3:32 ` Cong Wang
2013-05-30 11:41 ` [PATCH v7 net-next 5/5] ixgbe: add extra stats " Eliezer Tamir
2013-05-30 11:41 ` Eliezer Tamir
2013-06-02 14:02 ` [PATCH v7 net-next 0/5] net: low latency Ethernet device polling Eliezer Tamir
2013-06-02 20:11 ` David Miller
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=51A7B009.3030709@linux.intel.com \
--to=eliezer.tamir@linux.intel.com \
--cc=alexr@mellanox.com \
--cc=amirv@mellanox.com \
--cc=andi@firstfloor.org \
--cc=bhutchings@solarflare.com \
--cc=davem@davemloft.net \
--cc=donald.c.skidmore@intel.com \
--cc=e1000-devel@lists.sourceforge.net \
--cc=eilong@broadcom.com \
--cc=eliezer@tamir.org.il \
--cc=erdnetdev@gmail.com \
--cc=hpa@zytor.com \
--cc=jesse.brandeburg@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=or.gerlitz@gmail.com \
--cc=willemb@google.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.