All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Turner <pjt@google.com>
To: Alex Shi <alex.shi@intel.com>
Cc: Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Arjan van de Ven <arjan@linux.intel.com>,
	Borislav Petkov <bp@alien8.de>,
	Namhyung Kim <namhyung@kernel.org>,
	Mike Galbraith <efault@gmx.de>,
	Morten Rasmussen <morten.rasmussen@arm.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	gregkh@linuxfoundation.org,
	Preeti U Murthy <preeti@linux.vnet.ibm.com>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Len Brown <len.brown@intel.com>,
	rafael.j.wysocki@intel.com, jkosina@suse.cz,
	Clark Williams <clark.williams@gmail.com>,
	"tony.luck@intel.com" <tony.luck@intel.com>,
	keescook@chromium.org, Mel Gorman <mgorman@suse.de>,
	Rik van Riel <riel@redhat.com>
Subject: Re: [Resend patch v8 0/13] use runnable load in schedule balance
Date: Fri, 28 Jun 2013 03:56:25 -0700	[thread overview]
Message-ID: <CAPM31RLTrQ_E6VAwO000zcL09F1oV7vgkjTJXY9wPC-pZ_6h0Q@mail.gmail.com> (raw)
In-Reply-To: <51C867CF.70908@intel.com>

On Mon, Jun 24, 2013 at 8:37 AM, Alex Shi <alex.shi@intel.com> wrote:
> On 06/24/2013 06:40 PM, Paul Turner wrote:
>>> > Ingo & Peter,
>>> >
>>> > This patchset was discussed spread and deeply.
>>> >
>>> > Now just 6th/8th patch has some arguments on them, Paul think it is
>>> > better to consider blocked_load_avg in balance, since it is helpful on
>>> > some scenarios, but I think on most of scenarios, the blocked_load_avg
>>> > just cause load imbalance among cpus. and plus testing show with
>>> > blocked_load_avg the performance is just worse on some benchmarks. So, I
>>> > still prefer to keep it out of balance.
>> I think you have perhaps misunderstood what I was trying to explain.
>>
>> I have no problems with not including blocked load in load-balance, in
>> fact, I encouraged not accumulating it in an average of averages in
>> CPU load.
>>
>
> Many thanks for re-clarification!
>> The problem is that your current approach has removed it both from
>> load-balance _and_ from shares distribution; isolation matters as much
>> as performance in the cgroup case (otherwise you would just not use
>> cgroups).  I would expect the latter to have quite negative effects on
>> fairness, this is my primary concern.
>>
>
> So the argument is just on patch 'sched/tg: remove blocked_load_avg in balance'. :)
>
> I understand your correctness concern. but blocked_load_avg still will be decayed to zero in few hundreds ms. So such correctness needs just in few hundreds ms. (and cause performance drop)
> The blocked_load_avg is decayed on same degree as runnable load, it is a bit overweight since task slept. since it may will be waken up on other cpu. So to relieve this overweight, could we use the half or a quarter weight of blocked_load_avg? like following:
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index ddbc19f..395f57c 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -1358,7 +1358,7 @@ static inline void __update_cfs_rq_tg_load_contrib(struct cfs_rq *cfs_rq,
>         struct task_group *tg = cfs_rq->tg;
>         s64 tg_contrib;
>
> -       tg_contrib = cfs_rq->runnable_load_avg + cfs_rq->blocked_load_avg;
> +       tg_contrib = cfs_rq->runnable_load_avg + cfs_rq->blocked_load_avg / 2;
>         tg_contrib -= cfs_rq->tg_load_contrib;

So this is actually an interesting idea, but don't think of it as
overweight.  What "cfs_rq->blocked_load_avg / 2" means is actually
blocked_load_avg one period from now.  This is interesting because it
makes the (reasonable) supposition that blocked load is not about to
immediately wake, but will continue to decay.

Could you try testing the gvr_lb_tip branch at
git://git.kernel.org/pub/scm/linux/kernel/git/pjt/sched-tip.git ?

It's an extension to your series that tries to improve some of the
cpu_load interactions in an alternate way to the above.

It seems a little better on one and two-socket machines; but we
couldn't reproduce/compare to your best performance results since they
were taken on larger machines.

Thanks,

- Paul

  parent reply	other threads:[~2013-06-28 10:56 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-20  2:18 [Resend patch v8 0/13] use runnable load in schedule balance Alex Shi
2013-06-20  2:18 ` [Resend patch v8 01/13] Revert "sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking" Alex Shi
2013-06-26  5:05   ` Alex Shi
2013-06-26 20:30     ` Ingo Molnar
2013-06-27  1:07       ` Alex Shi
2013-06-27  9:01     ` [tip:sched/core] " tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 02/13] sched: move few runnable tg variables into CONFIG_SMP Alex Shi
2013-06-27  9:01   ` [tip:sched/core] sched: Move a " tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 03/13] sched: set initial value of runnable avg for new forked task Alex Shi
2013-06-27  9:01   ` [tip:sched/core] sched: Set an " tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 04/13] sched: fix slept time double counting in enqueue entity Alex Shi
2013-06-27  9:01   ` [tip:sched/core] sched: Fix sleep time double accounting " tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 05/13] sched: update cpu load after task_tick Alex Shi
2013-06-27  9:02   ` [tip:sched/core] sched: Update " tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 06/13] sched: compute runnable load avg in cpu_load and cpu_avg_load_per_task Alex Shi
2013-06-20 13:29   ` Vincent Guittot
2013-06-24  9:06   ` Alex Shi
2013-06-24 10:54     ` Paul Turner
2013-06-24 11:04     ` Vincent Guittot
2013-06-24 11:06       ` Paul Turner
2013-06-24 14:56         ` Alex Shi
2013-06-27  9:02   ` [tip:sched/core] sched: Compute " tip-bot for Alex Shi
2013-06-27 13:30   ` [Resend patch v8 06/13] sched: compute " Alex Shi
2013-06-20  2:18 ` [Resend patch v8 07/13] sched: consider runnable load average in move_tasks Alex Shi
2013-06-27  9:02   ` [tip:sched/core] sched: Consider runnable load average in move_tasks() tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 08/13] sched/tg: remove blocked_load_avg in balance Alex Shi
2013-06-20  2:18 ` [Resend patch v8 09/13] sched: change cfs_rq load avg to unsigned long Alex Shi
2013-06-27  9:02   ` [tip:sched/core] sched: Change " tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 10/13] sched/tg: use 'unsigned long' for load variable in task group Alex Shi
2013-06-27  9:02   ` [tip:sched/core] sched/tg: Use " tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 11/13] sched/cfs_rq: change atomic64_t removed_load to atomic_long_t Alex Shi
2013-06-27  9:02   ` [tip:sched/core] sched/cfs_rq: Change " tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 12/13] sched/tg: remove tg.load_weight Alex Shi
2013-06-27  9:02   ` [tip:sched/core] sched/tg: Remove tg.load_weight tip-bot for Alex Shi
2013-06-20  2:18 ` [Resend patch v8 13/13] sched: get_rq_runnable_load() can be static and inline Alex Shi
2013-06-27  9:03   ` [tip:sched/core] sched: Change get_rq_runnable_load() to " tip-bot for Alex Shi
2013-06-24  3:15 ` [Resend patch v8 0/13] use runnable load in schedule balance Alex Shi
2013-06-24 10:40   ` Paul Turner
2013-06-24 15:37     ` Alex Shi
2013-06-25 13:13       ` Alex Shi
2013-06-28 10:56       ` Paul Turner [this message]
2013-06-28 11:07         ` Peter Zijlstra
2013-06-28 11:12           ` Alex Shi
2013-10-28 10:25           ` Frederic Weisbecker
2013-10-28 12:22             ` Peter Zijlstra
     [not found]         ` <CAGjg+kGUo8vqv6hzobuyNoQjipLBXXofZ5q1rUyEehbD3cba9A@mail.gmail.com>
2013-06-28 16:00           ` Paul Turner
2013-07-09  8:53             ` Alex Shi
2013-06-26 14:27 ` Peter Zijlstra
2013-06-26 15:23   ` Alex Shi

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=CAPM31RLTrQ_E6VAwO000zcL09F1oV7vgkjTJXY9wPC-pZ_6h0Q@mail.gmail.com \
    --to=pjt@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=alex.shi@intel.com \
    --cc=arjan@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=clark.williams@gmail.com \
    --cc=efault@gmx.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=jkosina@suse.cz \
    --cc=keescook@chromium.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=morten.rasmussen@arm.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=preeti@linux.vnet.ibm.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=riel@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=vincent.guittot@linaro.org \
    --cc=viresh.kumar@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.