On 09/24/2009 08:28 PM, Paul E. McKenney wrote:
Each synchronize_srcu() call takes about 10ms (avg 3ms per
synchronize_sched call), so this is hurting us.
Is this expected? Is there any possibility for synchronize_srcu()
optimization?
There are other sides we can work on, such as reducing the memory slot
updates, but i'm wondering what can be done regarding SRCU itself.
This is expected behavior, but there is a possible fix currently
in mainline (Linus's git tree). The idea would be to create a
synchronize_srcu_expedited(), which starts with synchronize_srcu(), and
replaces the synchronize_sched() calls with synchronize_sched_expedited().
This could potentially reduce the overall synchronize_srcu() latency
to well under a microsecond. The price to be paid is that each instance
of synchronize_sched_expedited() IPIs all the online CPUs, and awakens
the migration thread on each.
Would this approach likely work for you?
It's perfect.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html