Re: [patch] remove put_cpu_no_resched() [ Resend ]

From: Ingo Molnar
Date: Sun May 03 2009 - 04:31:23 EST



* Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:

> Impact: remove a high latency source
>
> put_cpu_no_resched() is an optimization of put_cpu() which
> unfortunately can cause high latencies.
>
> The nfs iostats code uses put_cpu_no_resched() in a code sequence
> where a reschedule request caused by an interrupt between the
> get_cpu() and the put_cpu_no_resched() can delay the reschedule for at
> least HZ.
>
> The other users of put_cpu_no_resched() optimize correctly in
> interrupt code, but there is no real harm in using the put_cpu()
> function which is an alias for preempt_enable(). The extra check of the
> preemmpt count is not as critical as the potential source of missing a
> reschedule.
>
> Debugged in the preempt-rt tree and verified in mainline.
>
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxx>
> Cc: Tony Luck <tony.luck@xxxxxxxxx>
> Cc: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>
> ---
> arch/ia64/kernel/perfmon.c | 2 +-
> fs/nfs/iostat.h | 4 ++--
> include/linux/smp.h | 1 -
> 3 files changed, 3 insertions(+), 4 deletions(-)

Good catch!

Acked-by: Ingo Molnar <mingo@xxxxxxx>

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/