public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: morten.rasmussen@arm.com (Morten Rasmussen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 5/6] sched: replace capacity_factor by usage
Date: Thu, 2 Oct 2014 17:57:45 +0100	[thread overview]
Message-ID: <20141002165745.GA28662@e103034-lin> (raw)
In-Reply-To: <1411488485-10025-6-git-send-email-vincent.guittot@linaro.org>

On Tue, Sep 23, 2014 at 05:08:04PM +0100, Vincent Guittot wrote:
> Below are two examples to illustrate the problem that this patch solves:
> 
> 1 - capacity_factor makes the assumption that max capacity of a CPU is
> SCHED_CAPACITY_SCALE and the load of a thread is always is
> SCHED_LOAD_SCALE. It compares the output of these figures with the sum
> of nr_running to decide if a group is overloaded or not.
> 
> But if the default capacity of a CPU is less than SCHED_CAPACITY_SCALE
> (640 as an example), a group of 3 CPUS will have a max capacity_factor
> of 2 ( div_round_closest(3x640/1024) = 2) which means that it will be
> seen as overloaded if we have only one task per CPU.

I did some testing on TC2 which has the setup you describe above on the
A7 cluster when the clock-frequency property is set in DT. The two A15s
have max capacities above 1024. When using sysbench with five threads I
still get three tasks on the two A15s and two tasks on the three A7
leaving one cpu idle (on average).

Using cpu utilization (usage) does correctly identify the A15 cluster as
overloaded and it even gets as far as selecting the A15 running two
tasks as the source cpu in load_balance(). However, load_balance() bails
out without pulling the task due to calculate_imbalance() returning a
zero imbalance. calculate_imbalance() bails out just before the hunk you
changed due to comparison of the sched_group avg_loads. sgs->avg_load is
basically the sum of load in the group divided by its capacity. Since
load isn't scaled the avg_load of the overloaded A15 group is slightly
_lower_ than the partially idle A7 group. Hence calculate_imbalance()
bails out, which isn't what we want.

I think we need to have a closer look at the imbalance calculation code
and any other users of sgs->avg_load to get rid of all code making
assumptions about cpu capacity.

Morten

  parent reply	other threads:[~2014-10-02 16:57 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-23 16:07 [PATCH v6 0/6] sched: consolidation of cpu_capacity Vincent Guittot
2014-09-23 16:08 ` [PATCH v6 1/6] sched: add per rq cpu_capacity_orig Vincent Guittot
2014-09-23 16:08 ` [PATCH v6 2/6] sched: move cfs task on a CPU with higher capacity Vincent Guittot
2014-09-23 16:08 ` [PATCH v6 3/6] sched: add utilization_avg_contrib Vincent Guittot
2014-10-03 14:15   ` Peter Zijlstra
2014-10-03 14:44     ` Vincent Guittot
2014-10-03 14:36   ` Peter Zijlstra
2014-10-03 14:51     ` Vincent Guittot
2014-10-03 15:14       ` Peter Zijlstra
2014-10-03 16:05         ` Morten Rasmussen
2014-09-23 16:08 ` [PATCH v6 4/6] sched: get CPU's usage statistic Vincent Guittot
2014-09-25 19:05   ` Dietmar Eggemann
2014-09-26 12:17     ` Vincent Guittot
2014-09-26 15:58       ` Morten Rasmussen
2014-09-26 19:57       ` Dietmar Eggemann
2014-11-21  5:36       ` Wanpeng Li
2014-11-21 12:17         ` Vincent Guittot
2014-09-23 16:08 ` [PATCH v6 5/6] sched: replace capacity_factor by usage Vincent Guittot
2014-09-24 17:48   ` Dietmar Eggemann
2014-09-25  8:35     ` Vincent Guittot
2014-09-25 19:19       ` Dietmar Eggemann
2014-09-26 12:39         ` Vincent Guittot
2014-09-26 14:00           ` Dietmar Eggemann
2014-09-25  8:38   ` Vincent Guittot
2014-09-29 13:39   ` Dietmar Eggemann
2014-10-02 16:57   ` Morten Rasmussen [this message]
2014-10-03  7:24     ` Vincent Guittot
2014-10-03  9:35       ` Morten Rasmussen
2014-10-03 12:50         ` Vincent Guittot
2014-11-23  0:22           ` Wanpeng Li
2014-11-24  8:26             ` Vincent Guittot
2014-10-03 15:38   ` Peter Zijlstra
2014-10-06  8:55     ` Vincent Guittot
2014-09-23 16:08 ` [PATCH v6 6/6] sched: add SD_PREFER_SIBLING for SMT level Vincent Guittot
2014-09-24 12:27   ` Preeti U Murthy
2014-09-25 12:10     ` Vincent Guittot

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=20141002165745.GA28662@e103034-lin \
    --to=morten.rasmussen@arm.com \
    --cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox