From: Ingo Molnar <mingo@elte.hu>
To: David Miller <davem@davemloft.net>
Cc: wenji@fnal.gov, akpm@osdl.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [patch 1/4] - Potential performance bottleneck for Linxu TCP
Date: Thu, 30 Nov 2006 07:17:58 +0100 [thread overview]
Message-ID: <20061130061758.GA2003@elte.hu> (raw)
In-Reply-To: <20061129.181950.31643130.davem@davemloft.net>
* David Miller <davem@davemloft.net> wrote:
> We can make explicitl preemption checks in the main loop of
> tcp_recvmsg(), and release the socket and run the backlog if
> need_resched() is TRUE.
>
> This is the simplest and most elegant solution to this problem.
yeah, i like this one. If the problem is "too long locked section", then
the most natural solution is to "break up the lock", not to "boost the
priority of the lock-holding task" (which is what the proposed patch
does).
[ Also note that "sprinkle the code with preempt_disable()" kind of
solutions, besides hurting interactivity, are also a pain to resolve
in something like PREEMPT_RT. (unlike say a spinlock,
preempt_disable() is quite opaque in what data structure it protects,
etc., making it hard to convert it to a preemptible primitive) ]
> The one suggested in your patch and paper are way overkill, there is
> no reason to solve a TCP specific problem inside of the generic
> scheduler.
agreed.
What we could also add is a /reverse/ mechanism to the scheduler: a task
could query whether it has just a small amount of time left in its
timeslice, and could in that case voluntarily drop its current lock and
yield, and thus give up its current timeslice and wait for a new, full
timeslice, instead of being forcibly preempted due to lack of timeslices
with a possibly critical lock still held.
But the suggested solution here, to "prolong the running of this task
just a little bit longer" only starts a perpetual arms race between
users of such a facility and other kernel subsystems. (besides not being
adequate anyway, there can always be /so/ long lock-hold times that the
scheduler would have no other option but to preempt the task)
Ingo
next prev parent reply other threads:[~2006-11-30 6:17 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-30 1:56 [patch 1/4] - Potential performance bottleneck for Linxu TCP Wenji Wu
2006-11-30 2:19 ` David Miller
2006-11-30 6:17 ` Ingo Molnar [this message]
2006-11-30 6:30 ` David Miller
2006-11-30 6:47 ` Ingo Molnar
2006-11-30 7:12 ` David Miller
2006-11-30 7:35 ` Ingo Molnar
2006-11-30 9:52 ` Evgeniy Polyakov
2006-11-30 10:07 ` Nick Piggin
2006-11-30 10:22 ` Evgeniy Polyakov
2006-11-30 10:32 ` Ingo Molnar
2006-11-30 17:04 ` Wenji Wu
2006-11-30 20:20 ` Ingo Molnar
2006-11-30 20:58 ` Wenji Wu
2006-11-30 20:22 ` David Miller
2006-11-30 20:30 ` Ingo Molnar
2006-11-30 20:38 ` David Miller
2006-11-30 20:49 ` Ingo Molnar
2006-11-30 20:54 ` Ingo Molnar
2006-11-30 20:55 ` David Miller
2006-11-30 20:14 ` David Miller
2006-11-30 20:42 ` Wenji Wu
2006-12-01 9:53 ` Evgeniy Polyakov
2006-12-01 23:18 ` David Miller
2006-11-30 6:56 ` Ingo Molnar
2006-11-30 16:08 ` Wenji Wu
2006-11-30 20:06 ` David Miller
2006-11-30 9:33 ` Christoph Hellwig
2006-11-30 16:51 ` Lee Revell
-- strict thread matches above, loose matches on Subject: below --
2006-11-30 2:02 Wenji Wu
2006-11-30 6:19 ` Ingo Molnar
2006-11-29 23:27 [Changelog] " Wenji Wu
2006-11-29 23:28 ` [patch 1/4] " Wenji Wu
2006-11-30 0:53 ` David Miller
2006-11-30 1:08 ` Andrew Morton
2006-11-30 1:13 ` David Miller
2006-11-30 6:04 ` Mike Galbraith
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=20061130061758.GA2003@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@osdl.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=wenji@fnal.gov \
/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).