From: Mel Gorman <mgorman@techsingularity.net>
To: Valentin Schneider <valentin.schneider@arm.com>
Cc: Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Vincent Guittot <vincent.guittot@linaro.org>,
Phil Auld <pauld@redhat.com>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/4] sched/fair: Track efficiency of select_idle_sibling
Date: Mon, 23 Mar 2020 13:55:44 +0000 [thread overview]
Message-ID: <20200323135544.GG3818@techsingularity.net> (raw)
In-Reply-To: <jhj369zmc65.mognet@arm.com>
On Mon, Mar 23, 2020 at 01:30:10PM +0000, Valentin Schneider wrote:
>
> Hi Mel,
>
> On Fri, Mar 20 2020, Mel Gorman wrote:
> > SIS Search: Number of calls to select_idle_sibling
> >
> > SIS Domain Search: Number of times the domain was searched because the
> > fast path failed.
> >
> > SIS Scanned: Generally the number of runqueues scanned but the fast
> > path counts as 1 regardless of the values for target, prev
> > and recent.
> >
> > SIS Domain Scanned: Number of runqueues scanned during a search of the
> > LLC domain.
> >
> > SIS Failures: Number of SIS calls that failed to find an idle CPU
> >
>
> Let me put my changelog pedant hat on; it would be nice to explicitely
> separate the 'raw' stats (i.e. those that you are adding to sis()) to
> the downstream ones.
>
> AIUI the ones above here are the 'raw' stats (except "SIS Domain
> Scanned", I'm not sure I get where this one comes from?), and the ones
> below are the downstream, post-processed ones.
>
I can fix that up.
> > SIS Search Efficiency: A ratio expressed as a percentage of runqueues
> > scanned versus idle CPUs found. A 100% efficiency indicates that
> > the target, prev or recent CPU of a task was idle at wakeup. The
> > lower the efficiency, the more runqueues were scanned before an
> > idle CPU was found.
> >
> > SIS Domain Search Efficiency: Similar, except only for the slower SIS
> > patch.
> >
> > SIS Fast Success Rate: Percentage of SIS that used target, prev or
> > recent CPUs.
> >
> > SIS Success rate: Percentage of scans that found an idle CPU.
> >
> > Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
>
> With the nits taken into account:
>
> Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
>
> > ---
> > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> > index 1dea8554ead0..9d32a81ece08 100644
> > --- a/kernel/sched/fair.c
> > +++ b/kernel/sched/fair.c
> > @@ -6150,6 +6153,15 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
> > struct sched_domain *sd;
> > int i, recent_used_cpu;
> >
> > + schedstat_inc(this_rq()->sis_search);
> > +
> > + /*
> > + * Checking if prev, target and recent is treated as one scan. A
> > + * perfect hit on one of those is considered 100% efficiency.
> > + * Further scanning impairs efficiency.
> > + */
> > + schedstat_inc(this_rq()->sis_scanned);
> > +
>
> You may want to move that sis_scanned increment to below the 'symmetric'
> label. Also, you should instrument select_idle_capacity() with
> sis_scanned increments, if only for the sake of completeness.
>
Yes, that would make more sense. Instrumenting select_idle_capacity is
trivial so I'll fix that up too.
> One last thing: each of the new schedstat_inc() callsites use this_rq();
> IIRC because of the RELOC_HIDE() hiding underneath there's very little
> chance of the compiler caching this. However, this depends on schedstat,
> so I suppose that is fine.
>
It's a deliberate choice so that when schedstat is disabled there is no
cost. While some schedstat sites lookup the current runqueue, not all of
them do. This might be a little wasteful when schedstats are enabled but
at least it's consistent.
Thanks
--
Mel Gorman
SUSE Labs
next prev parent reply other threads:[~2020-03-23 13:55 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-20 15:12 [PATCH 0/4] Throttle select_idle_sibling when a target domain is overloaded Mel Gorman
2020-03-20 15:12 ` [PATCH 1/4] sched/fair: Track efficiency of select_idle_sibling Mel Gorman
2020-03-23 13:30 ` Valentin Schneider
2020-03-23 13:55 ` Mel Gorman [this message]
2020-03-20 15:12 ` [PATCH 2/4] sched/fair: Track efficiency of task recent_used_cpu Mel Gorman
2020-03-23 13:30 ` Valentin Schneider
2020-03-20 15:12 ` [PATCH 3/4] sched/fair: Clear SMT siblings after determining the core is not idle Mel Gorman
2020-03-23 13:31 ` Valentin Schneider
2020-03-20 15:12 ` [PATCH 4/4] sched/fair: Track possibly overloaded domains and abort a scan if necessary Mel Gorman
2020-03-20 15:48 ` Vincent Guittot
2020-03-20 16:44 ` Mel Gorman
2020-03-20 16:54 ` Vincent Guittot
2020-03-20 17:43 ` Mel Gorman
2020-03-24 10:35 ` Vincent Guittot
2020-03-24 11:23 ` Mel Gorman
2020-04-02 7:59 ` [sched/fair] 15e7470dfc: hackbench.throughput 11.2% improvement kernel test robot
2020-04-02 7:59 ` kernel test robot
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=20200323135544.GG3818@techsingularity.net \
--to=mgorman@techsingularity.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=pauld@redhat.com \
--cc=peterz@infradead.org \
--cc=valentin.schneider@arm.com \
--cc=vincent.guittot@linaro.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.