public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: george anzinger <george@mvista.com>
To: Ingo Oeser <ingo.oeser@informatik.tu-chemnitz.de>
Cc: Keith Owens <kaos@ocs.com.au>, linux-kernel@vger.kernel.org
Subject: Re: 2.4.20 kernel/timer.c may incorrectly reenable interrupts
Date: Fri, 11 Apr 2003 14:21:38 -0700	[thread overview]
Message-ID: <3E9731E2.9090606@mvista.com> (raw)
In-Reply-To: <20030411112728.M626@nightmaster.csn.tu-chemnitz.de>

Ingo Oeser wrote:
> On Fri, Apr 11, 2003 at 12:15:54AM -0700, george anzinger wrote:
> 
>>As machines get faster and faster, it will be come more and more of a 
>>burden to "stop the world" and sync with the interrupt system, which 
>>is running at a much slower speed.  This is what the cli / sti/ 
>>restore flags causes.  I saw one test where the time to do the cli was 
>>as long as the run_timer_list code, for example.
> 
> 
> Maybe we could replace some cli/sti pairs with spinlocks? If it
> takes more time to cli/sti than to run the whole code section
> that will be protected by the spinlock, then it might be better
> to use that instead and block in the IRQ dispatch code.

Not so fast there :)  The cli/sti is there to protect from "same cpu" 
contention, i.e. this machine can come here on interrupt so don't 
allow interrupts.  The spin lock is only good for the "other" cpus.

On the other hand, a cli/sti will NOT protect from other machine 
interrupts (baring the global cli which is not even in 2.5).

The better thing to do, IMHO, is to move the work off the interrupt 
path where only spin locks (and preemption locks) are required.

Another possibility is to make more use of the new read/write stuff 
that is now being used for the xtime lock.  The idea here is that we 
don't care if an interrupt (or the other machine) visits this data 
while we are here as long as we know about it and can then redo what 
we are doing.  This works very well for fetching a few words that need 
to be fetch atomically WRT the lock.  If the fetch is not atomic (i.e. 
was interrupted), just try again.  I haven't measured or heard of 
measurements on this change, but I suspect that there is a significant 
reduction in the time to do gettimeofday() because the cli/sti is not 
on the read path any more.
> 
> But I have no measures, how fast the spinlocks are in the
> non-/contention case
> 
> Problems: 
>    - The total amount of CLI/STI doesn't matter, for spinlocks it
>      does (they are not recursive)
> 
>    - spinlocks are usally not compiled in
> 
>    - Older CPUs may still benefit from cli/sti.
> 
> What do you think?
> 
> Regards
> 
> Ingo Oeser

-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml


  reply	other threads:[~2003-04-11 21:10 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-04-11  6:47 2.4.20 kernel/timer.c may incorrectly reenable interrupts Keith Owens
2003-04-11  7:15 ` george anzinger
2003-04-11  9:27   ` Ingo Oeser
2003-04-11 21:21     ` george anzinger [this message]
2003-04-12  8:55       ` Ingo Oeser
2003-04-14 21:49         ` george anzinger
2003-04-15 20:32           ` Ingo Oeser

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=3E9731E2.9090606@mvista.com \
    --to=george@mvista.com \
    --cc=ingo.oeser@informatik.tu-chemnitz.de \
    --cc=kaos@ocs.com.au \
    --cc=linux-kernel@vger.kernel.org \
    /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