netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).