From: Robert Olsson <Robert.Olsson@data.slu.se>
To: Pasi Sjoholm <ptsjohol@cc.jyu.fi>
Cc: Robert Olsson <Robert.Olsson@data.slu.se>,
Francois Romieu <romieu@fr.zoreil.com>,
H?ctor Mart?n <hector@marcansoft.com>,
Linux-Kernel <linux-kernel@vger.kernel.org>, <akpm@osdl.org>,
<netdev@oss.sgi.com>, <brad@brad-x.com>, <shemminger@osdl.org>
Subject: Re: ksoftirqd uses 99% CPU triggered by network traffic (maybe RLT-8139 related)
Date: Tue, 27 Jul 2004 00:38:12 +0200 [thread overview]
Message-ID: <16645.34772.760879.146784@robur.slu.se> (raw)
In-Reply-To: <Pine.LNX.4.44.0407270028170.11416-100000@silmu.st.jyu.fi>
Pasi Sjoholm writes:
> Hur är läget Robert?-)
Tack bra!
> > In summary: High softirq loads can totally kill userland. The reason is that
> > do_softirq() is run from many places hard interrupts, local_bh_enable etc
> > and bypasses the ksoftirqd protection. It just been discussed at OLS with
> > Andrea and Dipankar and others. Current RCU suffers from this problem as well.
>
> Ok, this explanation makes sense and my point of view I think this is
> quite critical problem if you can "crash" linux kernel just sending enough
> packets to network interface for an example.
Well the packets also has to create hard softirq loads in practice this means route
lookup or something else for normal traffic the RX_SOFIRQ is very well behaved
and schedules itself to give other softirq's a chance to run also I'll guess you
have softirq's not only from the network. If you decrease your load a bit you come
to more nomal operation?
> I would be more than glad to help you in testing if you want to publish
> some patches.
Well maybe we should start to verify that this problem. Alexey did a litte program
doing gettimeofday to run to see how long user mode could be starved. Also note we
add new source of softirq's.
#include <stdio.h>
#include <sys/time.h>
#include <asm/types.h>
main()
{
struct timeval tv, prev_tv;
__s64 diff;
__u32 i;
__s32 maxlat = 50;
gettimeofday(&prev_tv, NULL);
printf("time control loop starting\n");
for (i=0;;i++) {
gettimeofday(&tv, NULL);
diff = (tv.tv_sec - prev_tv.tv_sec)*1000000 +
(tv.tv_usec - prev_tv.tv_usec);
if (diff > 1000000)
printf("**%lld\n", diff);
prev_tv = tv;
if (diff > maxlat) {
maxlat = diff;
printf("new maxlat = %d\n", maxlat);
}
if(!(i % 1000000))
printf("timestamp diff = %lld, maxlat = %d\n", diff, maxlat);
}
}
Cheers.
--ro
next prev parent reply other threads:[~2004-07-26 22:38 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-24 21:05 ksoftirqd uses 99% CPU triggered by network traffic Héctor Martín
2004-07-24 23:27 ` Francois Romieu
2004-07-25 6:32 ` Héctor Martín
2004-07-25 20:27 ` ksoftirqd uses 99% CPU triggered by network traffic (maybe RLT-8139 related) Pasi Sjoholm
2004-07-25 21:59 ` Francois Romieu
2004-07-26 15:15 ` Pasi Sjoholm
2004-07-26 16:37 ` Robert Olsson
2004-07-26 21:46 ` Pasi Sjoholm
2004-07-26 22:38 ` Robert Olsson [this message]
2004-07-27 0:16 ` Pasi Sjoholm
2004-07-27 11:10 ` Robert Olsson
2004-07-27 14:20 ` Pasi Sjoholm
2004-07-27 20:24 ` Robert Olsson
2004-07-27 21:27 ` Pasi Sjoholm
2004-07-28 18:35 ` Robert Olsson
2004-07-28 19:09 ` James Morris
2004-07-29 0:46 ` Pasi Sjoholm
2004-07-30 9:18 ` Robert Olsson
2004-07-30 12:56 ` Pasi Sjoholm
2004-07-30 14:05 ` Robert Olsson
2004-07-30 18:40 ` Pasi Sjoholm
2004-07-31 12:33 ` Francois Romieu
2004-08-02 9:57 ` Pasi Sjoholm
2004-08-02 10:03 ` Pasi Sjoholm
2004-08-02 22:35 ` Francois Romieu
2004-08-03 12:32 ` Pasi Sjoholm
2004-08-03 16:50 ` Francois Romieu
2004-08-03 20:19 ` Pasi Sjoholm
2004-08-04 16:26 ` Pasi Sjoholm
2004-08-05 10:14 ` Hector Martin
2004-08-05 10:55 ` Hector Martin
2004-08-05 11:22 ` Francois Romieu
2004-08-05 15:28 ` OGAWA Hirofumi
2004-08-05 17:21 ` Francois Romieu
2004-07-30 14:12 ` Robert Olsson
2004-07-26 16:55 ` Stephen Hemminger
2004-07-26 21:28 ` Pasi Sjoholm
[not found] <41041DED.2010609@cox.net>
2004-07-25 21:18 ` Pasi Sjoholm
[not found] <4104257C.3080102@cox.net>
2004-07-25 21:42 ` Pasi Sjoholm
2004-07-25 22:31 ` Andrew Morton
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=16645.34772.760879.146784@robur.slu.se \
--to=robert.olsson@data.slu.se \
--cc=akpm@osdl.org \
--cc=brad@brad-x.com \
--cc=hector@marcansoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@oss.sgi.com \
--cc=ptsjohol@cc.jyu.fi \
--cc=romieu@fr.zoreil.com \
--cc=shemminger@osdl.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
all inboxes | Powered by JetHome®