From: Ingo Molnar <mingo@elte.hu>
To: David Miller <davem@davemloft.net>
Cc: shemminger@vyatta.com, kaber@trash.net, rick.jones2@hp.com,
dada1@cosmosbay.com, netdev@vger.kernel.org,
netfilter-devel@vger.kernel.org, tglx@linutronix.de,
gandalf@wlug.westbo.se, linux-kernel@vger.kernel.org
Subject: Re: [RFT 2/4] Add mod_timer_noact
Date: Wed, 18 Feb 2009 12:01:44 +0100 [thread overview]
Message-ID: <20090218110144.GA4100@elte.hu> (raw)
In-Reply-To: <20090218.013007.117003889.davem@davemloft.net>
* David Miller <davem@davemloft.net> wrote:
> From: Ingo Molnar <mingo@elte.hu>
> Date: Wed, 18 Feb 2009 10:20:41 +0100
>
> > Why dont you use something like this instead:
> >
> > if (del_timer(timer))
> > add_timer(timer);
> >
> > ?
>
> Why don't you read his commit message?
Uhm, of course i have read this piece of non-info:
| Introduce mod_timer_noact() which for example is to replace
| the calls to del_timer()/add_timer() in
| __nf_ct_refresh_acct(). It works like mod_timer() but doesn't
| activate or modify the timeout of an inactive timer which is
| the behaviour we want in order to be able to use timers as a
| means of synchronization in nf_conntrack.
It does not mention the overhead to the regular timer interfaces
at all, nor does it explain the reasons for this change
adequately.
And that's why i'm asking, why is the sequence i suggested above
inadequate? If del_timer(timer) returns 1 it means the timer was
active - and we call add_timer() only in that case. I.e. we dont
activate or modify the timeout of an inactive timer.
It can _only_ make a difference in the narrow special case of
code using the timer list lock as serialization: but that is a
pretty poor solution in this proposed form as it slows down the
other 2000 users of timers for no good reason. The changelog was
completely silent about that overhead aspect (which is small but
real), and i refuse to believe that this effect was not
realized.
In other words, the changelog is useless and even borderline
deceptive. Not a good sign if you are trying to get a patch
accepted to the kernel.
Furthermore, no performance figures were posted along with this
modification - it only stated that these are "performance
improvements". Especially in cases where a change slows down the
common case the showing of a very substantial performance
benefit is a must-have, before a patch is considered for
upstream merging.
You might be aware of that and you might have planned to provide
such info in the future, but the changelog and the submission
does not show any realization of this necessity, so i'm asking
for that here out of caution, to make sure it's done.
In fact, the submission incorrectly stated:
| This patch set is against Patrick's netfilter next tree since
| it is where it should end up.
|
| git.kernel.org:/pub/scm/linux/kernel/git/kaber/nf-next-2.6.git
This is wrong, the "netfilter next tree" is not where the "Add
mod_timer_noact" change should end up, and you should ask your
contributors to submit changes to other subsystems to their
respective maintainer trees - the timer tree in this case.
> At least show him that much respect if you're going to be
> against his patch.
Firstly, let me make clear what happened here.
Deep buried inside a networking patchset, Cc:-ed to the netdev
and netfilter lists only, a core kernel change is embedded that
in essence modifies 2000 callsites of the generic kernel. The
patch was not Cc:-ed to lkml.
Secondly, all i'm doing here is reviewing patches of subsystems
i maintain, so please stop attacking me for doing my job.
I noticed it because i read a lot of lists, but still, this was
not done transparently at all. Please show minimal respect to
Linux and post core kernel patches to lkml, and ask your
sub-maintainers to do likewise. If there's someone here who has
a moral basis for flaming here it's me, not you.
So, please, at minimum, follow the following well-established
protocol of contribution:
- Post timer patches to lkml (the mailing list mentioned in the
MAINTAINERS file), just like you expect networking patches to
be posted to netdev. It's basic courtesy and not doing so is
at minimum a double standard.
- Declare negative performance impact to the common case very
prominently in the changelog, and include analysis about why
it's worth paying the price.
- Include measurements that show clear positive performance
impact at the new usage site - which offsets the negative
micro-costs that every other usage site pays.
- Require your sub-contributors to write meaningful changelogs,
that mention every substantial effect of a change, especially
when they change core kernel facilities. For example:
Impact: add new API, slow down old APIs a tiny bit
Would have alerted people straight away. I had to read the
actual patch to figure out this key information.
I'm also utterly puzzled by your apparent desire to flame me.
This patch is wrong on so many levels that it's not even funny -
and you as a long-time kernel contributor should have realized
that straight away. Instead you forced me into wasting time on
this rather long email (and you also forced the very unnecessary
public embarrasment of a contributor), for what should have been
an 'oops, right, will fix' routine matter.
Thanks,
Ingo
next prev parent reply other threads:[~2009-02-18 11:02 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-18 5:19 [RFT 0/4] Netfilter/iptables performance improvements Stephen Hemminger
2009-02-18 5:19 ` [RFT 1/4] iptables: lock free counters Stephen Hemminger
2009-02-18 10:02 ` Patrick McHardy
2009-02-19 19:47 ` [PATCH] " Stephen Hemminger
2009-02-19 23:46 ` Eric Dumazet
2009-02-19 23:56 ` Rick Jones
2009-02-20 1:03 ` Stephen Hemminger
2009-02-20 1:18 ` Rick Jones
2009-02-20 9:42 ` Patrick McHardy
2009-02-20 22:57 ` Rick Jones
2009-02-21 0:35 ` Rick Jones
2009-02-20 9:37 ` Patrick McHardy
2009-02-20 18:10 ` [PATCH] iptables: xt_hashlimit fix Eric Dumazet
2009-02-20 18:33 ` Jan Engelhardt
2009-02-28 1:54 ` Jan Engelhardt
2009-02-28 6:56 ` Eric Dumazet
2009-02-28 8:22 ` Jan Engelhardt
2009-02-24 14:31 ` Patrick McHardy
2009-02-27 14:02 ` [PATCH] iptables: lock free counters Eric Dumazet
2009-02-27 16:08 ` [PATCH] rcu: increment quiescent state counter in ksoftirqd() Eric Dumazet
2009-02-27 16:34 ` Paul E. McKenney
2009-03-02 10:55 ` [PATCH] iptables: lock free counters Patrick McHardy
2009-03-02 17:47 ` Eric Dumazet
2009-03-02 21:56 ` Patrick McHardy
2009-03-02 22:02 ` Stephen Hemminger
2009-03-02 22:07 ` Patrick McHardy
2009-03-02 22:17 ` Paul E. McKenney
2009-03-02 22:27 ` Eric Dumazet
2009-02-18 5:19 ` [RFT 2/4] Add mod_timer_noact Stephen Hemminger
2009-02-18 9:20 ` Ingo Molnar
2009-02-18 9:30 ` David Miller
2009-02-18 11:01 ` Ingo Molnar [this message]
2009-02-18 11:39 ` Jarek Poplawski
2009-02-18 12:37 ` Ingo Molnar
2009-02-18 12:33 ` Patrick McHardy
2009-02-18 21:39 ` David Miller
2009-02-18 21:51 ` Ingo Molnar
2009-02-18 22:04 ` David Miller
2009-02-18 22:42 ` Peter Zijlstra
2009-02-18 22:47 ` David Miller
2009-02-18 22:56 ` Stephen Hemminger
2009-02-18 10:07 ` Patrick McHardy
2009-02-18 12:05 ` [patch] timers: add mod_timer_pending() Ingo Molnar
2009-02-18 12:33 ` Patrick McHardy
2009-02-18 12:50 ` Ingo Molnar
2009-02-18 12:54 ` Patrick McHardy
2009-02-18 13:47 ` Ingo Molnar
2009-02-18 17:00 ` Oleg Nesterov
2009-02-18 18:23 ` Ingo Molnar
2009-02-18 18:58 ` Oleg Nesterov
2009-02-18 19:24 ` Ingo Molnar
2009-02-18 10:29 ` [RFT 2/4] Add mod_timer_noact Patrick McHardy
2009-02-18 5:19 ` [RFT 3/4] Use mod_timer_noact to remove nf_conntrack_lock Stephen Hemminger
2009-02-18 9:54 ` Patrick McHardy
2009-02-18 11:05 ` Jarek Poplawski
2009-02-18 11:08 ` Patrick McHardy
2009-02-18 14:01 ` Eric Dumazet
2009-02-18 14:04 ` Patrick McHardy
2009-02-18 14:22 ` Eric Dumazet
2009-02-18 14:27 ` Patrick McHardy
2009-02-18 5:19 ` [RFT 4/4] netfilter: Get rid of central rwlock in tcp conntracking Stephen Hemminger
2009-02-18 9:56 ` Patrick McHardy
2009-02-18 14:17 ` Eric Dumazet
2009-02-19 22:03 ` Stephen Hemminger
2009-03-28 16:55 ` [PATCH] netfilter: finer grained nf_conn locking Eric Dumazet
2009-03-29 0:48 ` Stephen Hemminger
2009-03-30 19:57 ` Eric Dumazet
2009-03-30 20:05 ` Stephen Hemminger
2009-04-06 12:07 ` Patrick McHardy
2009-04-06 12:32 ` Jan Engelhardt
2009-04-06 17:25 ` Stephen Hemminger
2009-03-30 18:57 ` Rick Jones
2009-03-30 19:20 ` Eric Dumazet
2009-03-30 19:38 ` Jesper Dangaard Brouer
2009-03-30 19:54 ` Eric Dumazet
2009-03-30 20:34 ` Jesper Dangaard Brouer
2009-03-30 20:41 ` Eric Dumazet
2009-03-30 21:25 ` Jesper Dangaard Brouer
2009-03-30 22:44 ` Rick Jones
2009-02-18 21:55 ` [RFT 4/4] netfilter: Get rid of central rwlock in tcp conntracking David Miller
2009-02-18 23:23 ` Patrick McHardy
2009-02-18 23:35 ` Stephen Hemminger
2009-02-18 8:30 ` [RFT 0/4] Netfilter/iptables performance improvements Eric Dumazet
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=20090218110144.GA4100@elte.hu \
--to=mingo@elte.hu \
--cc=dada1@cosmosbay.com \
--cc=davem@davemloft.net \
--cc=gandalf@wlug.westbo.se \
--cc=kaber@trash.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=rick.jones2@hp.com \
--cc=shemminger@vyatta.com \
--cc=tglx@linutronix.de \
/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 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).