Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Jan 2015 15:46:46 -0800
From:      Sean Bruno <sbruno@ignoranthack.me>
To:        "K. Macy" <kmacy@freebsd.org>
Cc:        Hans Petter Selasky <hps@selasky.org>, Adrian Chadd <adrian@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>, Jason Wolfe <nitroboost@gmail.com>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, Gleb Smirnoff <glebius@freebsd.org>, Konstantin Belousov <kostikbel@gmail.com>
Subject:   Re: svn commit: r277213 - in head: share/man/man9 sys/kern sys/ofed/include/linux sys/sys
Message-ID:  <54BEE8E6.3080009@ignoranthack.me>
In-Reply-To: <CAHM0Q_MDJN_8sTvTDXfqA7UtJVO3Y8S8%2BNRCs_=6Nj4dkTzjOA@mail.gmail.com>
References:  <201501151532.t0FFWV2Y037455@svn.freebsd.org>	<CAJ-Vmok0GXZoojyi=jE=b5D-d338APztaf3Pw0_AAQ-173XSWw@mail.gmail.com>	<54BDD9E1.6090505@selasky.org>	<20150120075126.GA42409@kib.kiev.ua>	<20150120211137.GY15484@FreeBSD.org>	<54BED6FB.8060401@selasky.org>	<54BEE62D.2060703@ignoranthack.me> <CAHM0Q_MDJN_8sTvTDXfqA7UtJVO3Y8S8%2BNRCs_=6Nj4dkTzjOA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 01/20/15 15:40, K. Macy wrote:
> I think you're working around driver locking bugs by crippling the
> callout code.
> 
> -K
> 

We had zero evidence of this.  What leads you down that path?  I'm
totally open to being wrong, e.g. "yeah, you slowed down things so
that you don't hit a race condition"

sean

> On Tue, Jan 20, 2015 at 3:35 PM, Sean Bruno
> <sbruno@ignoranthack.me> wrote: On 01/20/15 14:30, Hans Petter
> Selasky wrote:
>>>> On 01/20/15 22:11, Gleb Smirnoff wrote:
>>>>> On Tue, Jan 20, 2015 at 09:51:26AM +0200, Konstantin
>>>>> Belousov wrote: K> > Like stated in the manual page, 
>>>>> callout_reset_curcpu/on() does not work K> > with MPSAFE
>>>>> callouts any more! K> I.e. you 'fixed' some undeterminate
>>>>> bugs in callout migration by not K> doing migration at all
>>>>> anymore. K> K> > K> > You need to use
>>>>> callout_init_{mtx,rm,rw} and remove the custom locking K> >
>>>>> inside the callback in the TCP stack to get it working like
>>>>> before! K> K> No, you need to do this, if you think that
>>>>> whole callout KPI must be K> rototiled.  It is up to the 
>>>>> person who modifies the KPI, to ensure that K> existing
>>>>> code is not broken. K> K> As I understand, currently we are
>>>>> back to the one-cpu callouts. K> Do other people consider
>>>>> this situation acceptable ?
>>>>> 
>>>>> I think this isn't acceptable. The commit to a complex
>>>>> subsystem lacked a review from persons involved in the
>>>>> system before. The commit to subsystem broke consumers of
>>>>> the subsystem and this was even done not accidentially, but
>>>>> due to Hans not caring about it.
>>>>> 
>>>>> As for me this is enough to request a backout, and let the 
>>>>> change back in only after proper review.
>>>>> 
>>>> 
>>>> Hi Gleb,
>>>> 
>>>> Backing out my callout API patch means we will for sure 
>>>> re-introduce an unknown callout spinlock hang, as noted to me
>>>> by several people. What do you think about that? dram Maybe
>>>> "Jason Wolfe" CC'ed can add to 10-stable w/o my patches:
>>>> 
> 
> Jason picked up this patch for work and it resolved our
> instability issues that had remained unsolved for quite some time
> as reported to freebsd-net:
> 
> https://lists.freebsd.org/pipermail/freebsd-net/2015-January/040895.html
>
>  This had gone undiagnosed for some time (even with the gracious
> help of jhb in offline emails, thanks btw!).
> 
> There's some diagnostics in that email thread that may be of value
> to you folks for determination of the validity of changing the
> callout API or at least understanding why we were involved in
> diagnostics.
> 
> While I'd sure love to tune performance, the fact that our
> machines were basically going out to lunch without these changes,
> probably means that others were seeing it and didn't know what else
> to do.  As much as I enjoy a good "break out the pitch forks and
> torches" email thread, this increased stability for us and is
> allowing us to upgrade from freebsd8 to freebsd10.  Bear this in
> mind when you throw your voice in favor of reverting.
> 
>>>> int callout_reset_sbt_on(struct callout *c, sbintime_t sbt, 
>>>> sbintime_t precision, void (*ftn)(void *), void *arg, int
>>>> cpu, int flags) { sbintime_t to_sbt, pr; struct callout_cpu
>>>> *cc; int cancelled, direct;
>>>> 
>>>> +       cpu = timeout_cpu;   /* XXX test code XXX */
>>>> 
>>>> cancelled = 0;
>>>> 
> 
> Jason or I would have to run this in production, which would be 
> problematic I fear.  We never had a deterministic test case that
> would exhibit the reported failure.  We merely "tested in
> production" and saw that panics ceased.  We didn't note a dropoff
> in our traffic either, perhaps we are not as efficient as others in
> this corner case, but we were consistently seeing the spinlock
> hangs after a day or so of traffic.
> 
>>>> And see if he observes a callout spinlock hang or not on his
>>>> test setup. The patch above should force all callouts to the
>>>> same thread basically. Then we could maybe see if single
>>>> threading the callouts has anything to do with solving the
>>>> spinlock hang.
>>>> 
>>>> The "rewritten" callout API still has all the features and 
>>>> capabilities the old one had, when used as described in "man
>>>> 9 callout".
>>>> 
>>>> At the present moment I'm not technically convinced a backout
>>>> is correct.
> 
> Neither am I, to be honest.  Just based on *results*.
> 
>>>> 
>>>> Gleb: I think we would see far better results with high
>>>> speed internet links using TCP if we could extend the LRO
>>>> (large receive offload) code to accumulate more than 64KBytes
>>>> worth of data per call to the TCP stack instead of
>>>> complaining about some callouts ending up on the same thread!
>>>> Actually I have a patch for that.
>>>> 
>>>> --HPS
>>>> 
>>>> 
>>>> 
> 
>> _______________________________________________ 
>> svn-src-head@freebsd.org mailing list 
>> http://lists.freebsd.org/mailman/listinfo/svn-src-head To
>> unsubscribe, send any mail to
>> "svn-src-head-unsubscribe@freebsd.org"
> 
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQF8BAEBCgBmBQJUvujmXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRCQUFENDYzMkU3MTIxREU4RDIwOTk3REQx
MjAxRUZDQTFFNzI3RTY0AAoJEBIB78oecn5kv2MH/1F15x/lgwWq5fE/cZ3n9HlV
9Nd7DU03coj9qUU6LH1eLPPuUn7yelCw8xxtb0qOTIDyrzNYe+HIaJi1GMHkV8Ve
iKFuB1G9gcN/nQ5BdaAezOazEUcRY2msigMh5n/2X/UDRzLAGfhbDFbogpRy1TyI
fqKzYDM8Mx9yZfCuc4/yBUVmxDcVn6NsuQ7CW745qXQcrELdJ8fjKfaYWbprCR7u
xA3Iwiio9Bv0/8MvR9n3PZ8z3NjAKD1XxV5iAPI+ANc/5Rc60cSmtP0mQakqOoz6
8uucaus79KdykdNovh31ka0dp0JBCghZOsfNXP69TFfvSXyngMZqwZgqVLVcX3M=
=0AV4
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54BEE8E6.3080009>