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

    Working...
    X