From: Sowmini Varadhan <sowmini.varadhan@oracle.com>
To: David Miller <davem@davemloft.net>
Cc: raghuram.kothakota@oracle.com, netdev@vger.kernel.org
Subject: Re: [PATCH net-next 0/2] sunvnet: Packet processing in non-interrupt context.
Date: Fri, 3 Oct 2014 10:40:24 -0400 [thread overview]
Message-ID: <20141003144024.GA12448@oracle.com> (raw)
In-Reply-To: <20141002.134346.2291749763304558513.davem@davemloft.net>
On (10/02/14 13:43), David Miller wrote:
> For example, you can now move everything into software IRQ context,
> just disable the VIO interrupt and unconditionally go into NAPI
> context from the VIO event.
> No more irqsave/irqrestore.
> Then the TX path even can run mostly lockless, it just needs
> to hold the VIO lock for a minute period of time. The caller
> holds the xmit_lock of the network device to prevent re-entry
> into the ->ndo_start_xmit() path.
>
let me check into this and get back. I think the xmit path
may also need to have some kind of locking for the dring access
and ldc_write? I think you are suggesting that I should also
move the control-packet processing to vnet_event_napi(), which
I have not done in my patch. I will examine where that leads.
But there is one thing that I do not understand - why does my hack
to lie to net_rx_action() by always returning "budget"
make such a difference to throughput?
Even if I set the budget to be as low as 64 (so I would get
called repeatedly under NAPIs polling infra), I have to
turn on the "liar" commented code in my patch for the throughput
shoots up to 2 - 2.5 Gbps (whereas it's otherwise around 300 Mbps).
Eyeballing the net_rx_action() code quickly did not make the explanation
for this pop out at me (yet).
Pure polling (i.e., workq) gives me about 1.5 Gbps, and pure-tasklet
(i.e, just setting up a tasklet from vnet_event to handle data) gives me
approx 2 Gbps. So I dont understand why NAPI doesn't give me something
similar, if I adhere strictly to the documentation.
--Sowmini
next prev parent reply other threads:[~2014-10-03 14:40 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-01 18:56 [PATCH net-next 0/2] sunvnet: Packet processing in non-interrupt context Sowmini Varadhan
2014-10-01 19:10 ` Eric Dumazet
2014-10-01 19:50 ` David Miller
2014-10-01 19:55 ` Sowmini Varadhan
2014-10-01 20:15 ` David Miller
2014-10-01 20:23 ` Sowmini Varadhan
2014-10-01 20:25 ` David Miller
2014-10-02 20:12 ` Sowmini Varadhan
2014-10-02 20:43 ` David Miller
2014-10-03 14:40 ` Sowmini Varadhan [this message]
2014-10-03 19:08 ` David Miller
2014-10-06 16:04 ` Sowmini Varadhan
2014-10-06 19:25 ` David Miller
2014-10-06 19:31 ` Sowmini Varadhan
2014-10-06 19:37 ` David Miller
2014-10-10 1:10 ` Raghuram Kothakota
2014-10-10 4:36 ` David Miller
2014-10-10 4:56 ` Raghuram Kothakota
2014-10-10 5:03 ` David Miller
2014-10-10 5:13 ` Raghuram Kothakota
2014-10-15 14:05 ` sunvnet NAPIfication Sowmini Varadhan
-- strict thread matches above, loose matches on Subject: below --
2014-10-01 20:24 [PATCH net-next 0/2] sunvnet: Packet processing in non-interrupt context Sowmini Varadhan
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=20141003144024.GA12448@oracle.com \
--to=sowmini.varadhan@oracle.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=raghuram.kothakota@oracle.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.