Announcement

Collapse
No announcement yet.

Kernel error messsage - NOHZ: local_softirq_pending 100

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Kernel error messsage - NOHZ: local_softirq_pending 100

    Any geniuses out there know what this means? Just started showing up in my kernel log (yes, I actually look once in awhile!).

    NOHZ: local_softirq_pending 100

    Only happens once a day or so, just never seen it before. Web searching reveals little reference to it except that it exists.

    Please Read Me

    #2
    Re: Kernel error messsage - NOHZ: local_softirq_pending 100

    Hello oshunluvr,

    Forgive me If I'm posting something you already know ( I don't want to be "captain obvious" here ), could this be of any help to you?:


    The NOHZ patch contains a check for softirqs pending when a CPU goes
    idle. The BUG is unrelated to NOHZ, it just was made visible by the NOHZ
    patch. The BUG showed up mainly on P4 / hyperthreading enabled machines
    which lead the investigations into the wrong direction in the first
    place. The real cause is in cond_resched_softirq():

    cond_resched_softirq() is enabling softirqs without invoking the softirq
    daemon when softirqs are pending. This leads to the warning message in
    the NOHZ idle code:

    t1 runs softirq disabled code on CPU#0
    interrupt happens, softirq is raised, but deferred (softirqs disabled)
    t1 calls cond_resched_softirq()
    enables softirqs via _local_bh_enable()
    calls schedule()
    t2 runs
    t1 is migrated to CPU#1
    t2 is done and invokes idle()
    NOHZ detects the pending softirq

    ================================================== =================
    --- linux.orig/kernel/sched.c
    +++ linux/kernel/sched.c
    @@ -4212,9 +4212,7 @@ int __sched cond_resched_softirq(void)
    BUG_ON(!in_softirq());

    if (need_resched() && system_state == SYSTEM_RUNNING) {
    raw_local_irq_disable();
    _local_bh_enable();- raw_local_irq_enable();
    local_bh_enable();
    __cond_resched();
    local_bh_disable();
    return 1;

    Fix: change _local_bh_enable() to local_bh_enable() so the softirq
    daemon is invoked.
    Here is the original link:

    http://lkml.org/lkml/2007/5/22/35

    I know that this is an old link, but it seems that this "patch" might be what you are looking for (though, you may need to recompile kernel)

    Regards

    Comment

    Users Viewing This Topic

    Collapse

    There are 0 users viewing this topic.

    Working...
    X