From: Nix <nix@esperi.org.uk>
To: Francois Romieu <romieu@fr.zoreil.com>
Cc: rl@hellgate.ch, Bjarke Istrup Pedersen <gurligebis@gentoo.org>,
"David S. Miller" <davem@davemloft.net>,
Linux-Netdev <netdev@vger.kernel.org>
Subject: Re: 3.19+: (and quite probably earlier) VIA Rhine hanging under high network load, yet again: redux
Date: Mon, 06 Apr 2015 00:29:12 +0100 [thread overview]
Message-ID: <87mw2mw3w7.fsf@spindle.srvr.nix> (raw)
In-Reply-To: <20150405231510.GA15719@electric-eye.fr.zoreil.com> (Francois Romieu's message of "Mon, 6 Apr 2015 01:15:10 +0200")
On 6 Apr 2015, Francois Romieu outgrape:
> Nix <nix@esperi.org.uk> :
> [...]
>> Gross or not, it seems to work: I've loaded it enough to crash it half a
>> dozen times, and not a crash. However, the rx_dropped stats on the link
>> aren't going up, so maybe I've just been lucky.
>
> Rx descriptors are now recycled as soon as they are processed whereas the
> driver used to perform a complete processing batch before recycling any
> descriptor. It could make a huge difference.
Ah, of course, nothing bounds rx rates :( I was stupidly thinking the
TX_RING_SIZE / TX_QUEUE_LEN gap would help us, but of course that's on
the other side. I just shouldn't read code when thick with cold, I make
really stupid thinkos... tx != rx dammit, it's not like they even share
much code in this driver, with rx being run out of napipoll and tx still
being direct...
(I'm still surprised a 64-entry RX ring can run us out of memory,
though: 64 * 1500 isn't that big, even for atomic allocations...)
> The pre-patch rx batch recycling did not include any barrier between
> rp->rx_ring[entry].addr and rp->rx_ring[entry].rx_status updates to
> enforce the ordering.
I bet that's the crucial part. At high rx rates in the pre-patch driver,
you fill up the ring and then lose that race, and disaster ensues.
> Whatever the outcome I'll have to clean my mess though.
Your mess has a) fixed the problem and b) fixed the problem *during the
easter break*. Major kudos.
prev parent reply other threads:[~2015-04-05 23:29 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-04 18:03 3.19+: (and quite probably earlier) VIA Rhine hanging under high network load, yet again: redux Nix
2015-04-04 21:05 ` Francois Romieu
2015-04-04 21:26 ` Nix
2015-04-05 4:01 ` David Miller
2015-04-05 20:59 ` Nix
2015-04-05 23:15 ` Francois Romieu
2015-04-05 23:29 ` Nix [this message]
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=87mw2mw3w7.fsf@spindle.srvr.nix \
--to=nix@esperi.org.uk \
--cc=davem@davemloft.net \
--cc=gurligebis@gentoo.org \
--cc=netdev@vger.kernel.org \
--cc=rl@hellgate.ch \
--cc=romieu@fr.zoreil.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.