lkml.org 
[lkml]   [2004]   [Oct]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [patch] voluntary-preempt-2.6.9-rc3-mm1-S9
    Rui Nuno Capela wrote:
    > Ingo wrote:
    >
    >>i've released the -S9 VP patch:
    >>http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc3-mm2-S9
    >>
    >
    >
    > Me again, we bad humor :(
    >
    > My SMP/HT box is (again) terribly in that uglyness of being quite
    > unfriendly to -mm1, -mm2, and indirectly to -S8 and -S9 labeled kernels.
    >
    > It works quite well with vanilla 2.6.9-rc3, though.
    >
    > But very, very bad with those -mm1 or -mm2 patches. To get it straight,
    > almost all the time it hangs, randomly, but not as completely as to a
    > dramatic cold-reboot. It stalls on the the most administrative tasks. Name
    > one, and it stalls! I can hardly feel lucky if it sometimes reaches the
    > login prompt, while boot/initing.
    >
    > I know you remember this story. Yeah. This seems quite similar to some of
    > earlier problems, but (un/fortunately) it doesn't seem related to VP at
    > all. Just having -mm1 or -mm2 is enough to make this machine go astray.
    >
    > However, as usual, this seems to be ix86 SMP/HT specific. On my laptop, I
    > get to run full 2.6.9-rc3-mm2-S9 UP very happily.
    >
    > Sorry if I can't get any real or useful debug data for now. The bad
    > behavior I'm referring to, is terribly non-deterministic, so I couldn't
    > get a pattern yet.
    >
    > I just wanted to let you know ;)

    This may be my fault. I made changes in the SMH code as part of the
    ZAPHOD patch but was unable to test them on a hyperthreaded machine due
    to a lack thereof (I have one on order). I've attached a patch that
    reverts the changes that I made. Can you give them a try please and let
    me know if they fix your problem?

    Thanks
    Peter
    --
    Peter Williams pwil3058@bigpond.net.au

    "Learning, n. The kind of ignorance distinguishing the studious."
    -- Ambrose Bierce
    --- linux-2.6.9-rc3-mm2/kernel/sched.c 2004-10-05 15:17:09.157119322 +1000
    +++ linux-2.6.9-rc3-mm2-mod/kernel/sched.c 2004-10-05 15:27:05.355561830 +1000
    @@ -3240,18 +3240,21 @@ need_resched:
    put_task_in_sinbin(prev);

    cpu = smp_processor_id();
    - if (unlikely(needs_idle_balance(rq))) {
    + if (unlikely(!rq->nr_running)) {
    go_idle:
    idle_balance(cpu, rq);
    - /* This code should get optimised away when CONFIG_SCHED_SMT
    - * is not defined
    - */
    - if (dependent_idle(rq))
    + if (!rq->nr_running) {
    + next = rq->idle;
    wake_sleeping_dependent(cpu, rq);
    + /*
    + * wake_sleeping_dependent() might have released
    + * the runqueue, so break out if we got new
    + * tasks meanwhile:
    + */
    + if (!rq->nr_running)
    + goto switch_tasks;
    + }
    } else {
    - /* This code should all get optimised away when CONFIG_SCHED_SMT
    - * is not defined
    - */
    if (dependent_sleeper(cpu, rq)) {
    schedstat_inc(rq, sched_goidle);
    next = rq->idle;
    @@ -3262,7 +3265,7 @@ go_idle:
    * lock, hence go into the idle loop if the rq went
    * empty meanwhile:
    */
    - if (unlikely(recheck_needs_idle_balance(rq)))
    + if (unlikely(!rq->nr_running))
    goto go_idle;
    }
    \
     
     \ /
      Last update: 2005-03-22 14:06    [W:4.031 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site