svn commit: r242014 - head/sys/kern
John Baldwin
jhb at freebsd.org
Wed Oct 24 18:44:24 UTC 2012
On Wednesday, October 24, 2012 2:36:41 pm Jim Harris wrote:
> Author: jimharris
> Date: Wed Oct 24 18:36:41 2012
> New Revision: 242014
> URL: http://svn.freebsd.org/changeset/base/242014
>
> Log:
> Pad tdq_lock to avoid false sharing with tdq_load and tdq_cpu_idle.
>
> This enables CPU searches (which read tdq_load) to operate independently
> of any contention on the spinlock. Some scheduler-intensive workloads
> running on an 8C single-socket SNB Xeon show considerable improvement with
> this change (2-3% perf improvement, 5-6% decrease in CPU util).
>
> Sponsored by: Intel
> Reviewed by: jeff
>
> Modified:
> head/sys/kern/sched_ule.c
>
> Modified: head/sys/kern/sched_ule.c
>
==============================================================================
> --- head/sys/kern/sched_ule.c Wed Oct 24 18:33:44 2012 (r242013)
> +++ head/sys/kern/sched_ule.c Wed Oct 24 18:36:41 2012 (r242014)
> @@ -223,8 +223,13 @@ static int sched_idlespinthresh = -1;
> * locking in sched_pickcpu();
> */
> struct tdq {
> - /* Ordered to improve efficiency of cpu_search() and switch(). */
> + /*
> + * Ordered to improve efficiency of cpu_search() and switch().
> + * tdq_lock is padded to avoid false sharing with tdq_load and
> + * tdq_cpu_idle.
> + */
> struct mtx tdq_lock; /* run queue lock. */
> + char pad[64 - sizeof(struct mtx)];
Can this use 'tdq_lock __aligned(CACHE_LINE_SIZE)' instead?
--
John Baldwin
More information about the svn-src-all
mailing list