lkml.org 
[lkml]   [2009]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH RFC] softirq: fix ksoftirq starved

    * Lai Jiangshan <laijs@cn.fujitsu.com> wrote:

    > Ingo Molnar wrote:
    > > * Lai Jiangshan <laijs@cn.fujitsu.com> wrote:
    > >
    > >> --- a/kernel/sched.c
    > >> +++ b/kernel/sched.c
    > >> @@ -5307,6 +5307,7 @@ need_resched:
    > >> release_kernel_lock(prev);
    > >> need_resched_nonpreemptible:
    > >>
    > >> + schedule_softirq_check();
    > >> schedule_debug(prev);
    > >
    > > hm, this slows down the scheduler fast-path ...
    > >
    > > Ingo
    > >
    > >
    >
    > It's true. But:
    >
    > The overheads are:
    >
    > Overhead-A: the function call statement "schedule_softirq_check();"
    > It can be gotten rid off by a macro or inline function.
    >
    > Overhead-B: __get_cpu_var() and the test statement.
    >
    > Overhead-C: do_softirq()
    > In my patch, we test a variable and then call do_softirq() when
    > the variable is true. do_softirq() can be called from process
    > context or from schedule() or by any other ways, but it must be
    > called and avoids starvation in this condition.
    > So we need pay this overhead. It is no worse than before.
    >
    > Is it a critical thing when it slows down the scheduler fast-path
    > because of the "Overhead-B"?
    >
    > Or I misunderstand something?

    The thing is that _any_ extra instruction in the scheduler fast-path
    should be avoided. I dont think it can be claimed that this problem
    can only be solved that way.

    Ingo


    \
     
     \ /
      Last update: 2009-06-20 17:51    [W:0.024 / U:1.264 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site