Re: [PATCH 0 of 9] x86/smp function calls: convert x86 tlb flushesto use function calls [POST 2]

From: Ingo Molnar
Date: Mon Aug 18 2008 - 20:46:16 EST



* Jeremy Fitzhardinge <jeremy@xxxxxxxx> wrote:

> This series:
> - adds a simple debugfs profiling entry for cross-cpu tlb flushes
> - converts them to using smp_call_function_mask
> - unifies 32 and 64-bit tlb flushes
> - converts smp_call_function to using multiple queues (using the now
> freed vectors)
> - allows config-time adjustment of the number of queues
> - adds a kernel parameter to disable multi-queue in case it causes
> problems
>
> The main concern is whether using smp_call_function adds an
> unacceptible performance hit to cross-cpu tlb flushes. My limited
> measurements show a ~35% regression in latency for a particular flush;
> it would be interesting to try this on a wider range of hardware. I
> gather the effect tlb flush performance is very application specific
> as well, but I'm not sure what benchmarks show what effects.
>
> Trading off agains the latency of a given flush, the smp_function_call
> mechanism allows multiple requests to be queued, and so may improve
> throughput on a system-wide basis.
>
> So, I'd like people to try this out and see what performance effects
> it has.

nice stuff!

I suspect the extra cost might be worth it for two reasons: 1) we could
optimize the cross-call implementation further 2) on systems where TLB
flushes actually matter, the ability to overlap multiple TLB flushes to
the same single CPU might improve workloads.

FYI, i've created a new -tip topic for your patches, tip/x86/tlbflush.
It's based on tip/irq/sparseirq (there are a good deal of dependencies
with that topic).

It would be nice to see some numbers on sufficiently SMP systems, using
some mmap/munmap intense workload.

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/