All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <jolsa@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	lkml <linux-kernel@vger.kernel.org>,
	Don Zickus <dzickus@redhat.com>, Joe Mario <jmario@redhat.com>
Subject: Re: [PATCH] sched: Move sched_entity::avg into separate cache line
Date: Tue, 8 Dec 2015 17:33:08 -0300	[thread overview]
Message-ID: <20151208203308.GM11564@kernel.org> (raw)
In-Reply-To: <1449606239-28602-1-git-send-email-jolsa@kernel.org>

Em Tue, Dec 08, 2015 at 09:23:59PM +0100, Jiri Olsa escreveu:
> From: root <root@hp-dl380gen9-01.khw.lab.eng.bos.redhat.com>
> 
> hi,
> I tried Joe's and Don's c2c tool and it identified
> a place with cache line contention. There're more
> that poped up, this one was just too obvious ;-)

Would be interesting to see output from that tool and how you have
interpreted it to be for that specific data structure.

- Arnaldo
 
> thanks
> jirka
> 
> 
> ---
> The sched_entity::avg collides with read-mostly sched_entity data.
> 
> The perf c2c tool showed many read HITM accesses across
> many CPUs for sched_entity's cfs_rq and my_q, while having
> at the same time tons of stores for avg.
> 
> After placing sched_entity::avg into separate cache line,
> the perf bench sched pipe showed around 20 seconds speedup.
> 
> NOTE I cut out all perf events except for cycles and
> instructions from following output.
> 
> Before:
>   $ perf stat -r 5 perf bench sched pipe -l 10000000
>   # Running 'sched/pipe' benchmark:
>   # Executed 10000000 pipe operations between two processes
> 
>        Total time: 270.348 [sec]
> 
>         27.034805 usecs/op
>             36989 ops/sec
>    ...
> 
>      245,537,074,035      cycles                    #    1.433 GHz
>      187,264,548,519      instructions              #    0.77  insns per cycle
> 
>        272.653840535 seconds time elapsed           ( +-  1.31% )
> 
> After:
>   $ perf stat -r 5 perf bench sched pipe -l 10000000
>   # Running 'sched/pipe' benchmark:
>   # Executed 10000000 pipe operations between two processes
> 
>        Total time: 251.076 [sec]
> 
>         25.107678 usecs/op
>             39828 ops/sec
>   ...
> 
>      244,573,513,928      cycles                    #    1.572 GHz
>      187,409,641,157      instructions              #    0.76  insns per cycle
> 
>        251.679315188 seconds time elapsed           ( +-  0.31% )
> 
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
>  include/linux/sched.h | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 3b0de68bce41..80cc1432e6e3 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -1268,8 +1268,13 @@ struct sched_entity {
>  #endif
>  
>  #ifdef CONFIG_SMP
> -	/* Per entity load average tracking */
> -	struct sched_avg	avg;
> +	/*
> +	 * Per entity load average tracking.
> +	 *
> +	 * Put into separate cache line so it does not
> +	 * collide with read-mostly values above.
> +	 */
> +	struct sched_avg	avg ____cacheline_aligned_in_smp;
>  #endif
>  };
>  
> -- 
> 2.4.3

  reply	other threads:[~2015-12-08 20:33 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-08 20:23 [PATCH] sched: Move sched_entity::avg into separate cache line Jiri Olsa
2015-12-08 20:33 ` Arnaldo Carvalho de Melo [this message]
2016-01-06 18:49 ` [tip:sched/core] sched/core: Move sched_entity:: avg " tip-bot for Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151208203308.GM11564@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=dzickus@redhat.com \
    --cc=jmario@redhat.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.