All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andi Kleen <andi@firstfloor.org>
To: Chris Friesen <cfriesen@nortel.com>
Cc: Andi Kleen <andi@firstfloor.org>,
	Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Steven Rostedt <rostedt@goodmis.org>,
	David Miller <davem@davemloft.net>,
	linuxppc-dev@ozlabs.org, paulus@samba.org,
	netdev@vger.kernel.org
Subject: Re: question about softirqs
Date: Wed, 13 May 2009 21:53:40 +0200	[thread overview]
Message-ID: <20090513195340.GC19296@one.firstfloor.org> (raw)
In-Reply-To: <4A0B233B.8010105@nortel.com>

On Wed, May 13, 2009 at 01:44:59PM -0600, Chris Friesen wrote:
> Andi Kleen wrote:
> > On Wed, May 13, 2009 at 01:04:09PM -0600, Chris Friesen wrote:
> >> Andi Kleen wrote:
> >>
> >>> network packets are normally processed by the network packet interrupt's
> >>> softirq or alternatively in the NAPI poll loop.
> >> If we have a high priority task, ksoftirqd may not get a chance to run.
> > 
> > In this case the next interrupt will also process them. It will just
> > go more slowly because interrupts limit the work compared to ksoftirqd.
> 
> I realize that they will eventually get processed.  My point is that the
> documentation (in-kernel, online, and in various books) says that
> softirqs will be processed _on the return from a syscall_. 

They are. The documentation is correct. 

What might not be all processed is all packets that are in the per CPU
backlog queue when the network softirq runs (for non NAPI, for NAPI that's 
obsolete anyways). That's because there are limits.

Or when new work comes in in parallel it doesn't process it all.

But that's always the case -- no queue is infinite, so you have
always situations where it can drop or delay items.

-Andi

-- 
ak@linux.intel.com -- Speaking for myself only.

WARNING: multiple messages have this Message-ID (diff)
From: Andi Kleen <andi@firstfloor.org>
To: Chris Friesen <cfriesen@nortel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
	netdev@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
	Steven Rostedt <rostedt@goodmis.org>,
	linuxppc-dev@ozlabs.org, Andi Kleen <andi@firstfloor.org>,
	paulus@samba.org, Thomas Gleixner <tglx@linutronix.de>,
	David Miller <davem@davemloft.net>
Subject: Re: question about softirqs
Date: Wed, 13 May 2009 21:53:40 +0200	[thread overview]
Message-ID: <20090513195340.GC19296@one.firstfloor.org> (raw)
In-Reply-To: <4A0B233B.8010105@nortel.com>

On Wed, May 13, 2009 at 01:44:59PM -0600, Chris Friesen wrote:
> Andi Kleen wrote:
> > On Wed, May 13, 2009 at 01:04:09PM -0600, Chris Friesen wrote:
> >> Andi Kleen wrote:
> >>
> >>> network packets are normally processed by the network packet interrupt's
> >>> softirq or alternatively in the NAPI poll loop.
> >> If we have a high priority task, ksoftirqd may not get a chance to run.
> > 
> > In this case the next interrupt will also process them. It will just
> > go more slowly because interrupts limit the work compared to ksoftirqd.
> 
> I realize that they will eventually get processed.  My point is that the
> documentation (in-kernel, online, and in various books) says that
> softirqs will be processed _on the return from a syscall_. 

They are. The documentation is correct. 

What might not be all processed is all packets that are in the per CPU
backlog queue when the network softirq runs (for non NAPI, for NAPI that's 
obsolete anyways). That's because there are limits.

Or when new work comes in in parallel it doesn't process it all.

But that's always the case -- no queue is infinite, so you have
always situations where it can drop or delay items.

-Andi

-- 
ak@linux.intel.com -- Speaking for myself only.

  reply	other threads:[~2009-05-13 19:48 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-08 22:51 question about softirqs Chris Friesen
2009-05-08 23:05 ` David Miller
2009-05-08 23:34 ` Paul Mackerras
2009-05-08 23:53   ` David Miller
2009-05-09  2:52     ` Benjamin Herrenschmidt
2009-05-09  3:31     ` Paul Mackerras
2009-05-09  6:48       ` David Miller
2009-05-11 18:25         ` Chris Friesen
2009-05-11 23:24           ` David Miller
2009-05-12  0:43             ` Chris Friesen
2009-05-12  8:12               ` Ingo Molnar
2009-05-12  8:12                 ` Ingo Molnar
2009-05-12  9:12                 ` Peter Zijlstra
2009-05-12  9:23                   ` Ingo Molnar
2009-05-12  9:32                     ` Peter Zijlstra
2009-05-12 12:20                       ` Steven Rostedt
2009-05-12 12:20                         ` Steven Rostedt
2009-05-13  4:45                         ` David Miller
2009-05-13  4:44                     ` David Miller
2009-05-13  4:44                       ` David Miller
2009-05-13  5:15                       ` Paul Mackerras
2009-05-13  5:15                         ` Paul Mackerras
2009-05-13  5:28                         ` David Miller
2009-05-13  5:28                           ` David Miller
2009-05-13  5:55                   ` Evgeniy Polyakov
2009-05-13  5:55                     ` Evgeniy Polyakov
2009-05-12 15:18                 ` Chris Friesen
2009-05-12 15:18                   ` Chris Friesen
2009-05-13  8:34                   ` Andi Kleen
2009-05-13  8:34                     ` Andi Kleen
2009-05-13 13:23                     ` Chris Friesen
2009-05-13 14:15                       ` Andi Kleen
2009-05-13 14:15                         ` Andi Kleen
2009-05-13 14:17                         ` Thomas Gleixner
2009-05-13 14:17                           ` Thomas Gleixner
2009-05-13 14:24                           ` Andi Kleen
2009-05-13 14:24                             ` Andi Kleen
2009-05-13 14:54                             ` Eric Dumazet
2009-05-13 14:54                               ` Eric Dumazet
2009-05-13 15:02                               ` Andi Kleen
2009-05-13 15:02                                 ` Andi Kleen
2009-05-13 15:05                             ` Chris Friesen
2009-05-13 15:54                               ` Thomas Gleixner
2009-05-13 15:54                                 ` Thomas Gleixner
2009-05-13 16:10                                 ` Chris Friesen
2009-05-13 17:01                               ` Andi Kleen
2009-05-13 19:04                                 ` Chris Friesen
2009-05-13 19:04                                   ` Chris Friesen
2009-05-13 19:13                                   ` Andi Kleen
2009-05-13 19:13                                     ` Andi Kleen
2009-05-13 19:44                                     ` Chris Friesen
2009-05-13 19:53                                       ` Andi Kleen [this message]
2009-05-13 19:53                                         ` Andi Kleen
2009-05-13 20:55                                         ` Thomas Gleixner
2009-05-13 20:55                                           ` Thomas Gleixner
2009-05-11 23:34           ` Paul Mackerras
2009-05-09  0:28   ` Chris Friesen

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=20090513195340.GC19296@one.firstfloor.org \
    --to=andi@firstfloor.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=cfriesen@nortel.com \
    --cc=davem@davemloft.net \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=paulus@samba.org \
    --cc=rostedt@goodmis.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.