All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vincent Guittot <vincent.guittot@linaro.org>
To: Preeti U Murthy <preeti@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>,
	LAK <linux-arm-kernel@lists.infradead.org>,
	Rik van Riel <riel@redhat.com>,
	Morten Rasmussen <Morten.Rasmussen@arm.com>,
	Mike Galbraith <efault@gmx.de>,
	Nicolas Pitre <nicolas.pitre@linaro.org>,
	"linaro-kernel@lists.linaro.org" <linaro-kernel@lists.linaro.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Dietmar Eggemann <dietmar.eggemann@arm.com>
Subject: Re: [PATCH v5 08/12] sched: move cfs task on a CPU with higher capacity
Date: Wed, 3 Sep 2014 13:44:58 +0200	[thread overview]
Message-ID: <CAKfTPtCXBYSbXVgdeyMtvuK8aZaRBzhs9S3=+V2jvXnoCJFqBQ@mail.gmail.com> (raw)
In-Reply-To: <5406DB43.1030506@linux.vnet.ibm.com>

On 3 September 2014 11:11, Preeti U Murthy <preeti@linux.vnet.ibm.com> wrote:
> On 09/01/2014 02:15 PM, Vincent Guittot wrote:
>> On 30 August 2014 19:50, Preeti U Murthy <preeti@linux.vnet.ibm.com> wrote:
>>> Hi Vincent,
>>>> index 18db43e..60ae1ce 100644
>>>> --- a/kernel/sched/fair.c
>>>> +++ b/kernel/sched/fair.c
>>>> @@ -6049,6 +6049,14 @@ static bool update_sd_pick_busiest(struct lb_env *env,
>>>>                       return true;
>>>>       }
>>>>
>>>> +     /*
>>>> +      * The group capacity is reduced probably because of activity from other
>>>> +      * sched class or interrupts which use part of the available capacity
>>>> +      */
>>>> +     if ((sg->sgc->capacity_orig * 100) > (sgs->group_capacity *
>>>> +                             env->sd->imbalance_pct))
>>>
>>> Wouldn't the check on avg_load let us know if we are packing more tasks
>>> in this group than its capacity ? Isn't that the metric we are more
>>> interested in?
>>
>> With  this patch, we don't want to pack but we prefer to spread the
>> task on another CPU than the one which handles the interruption if
>> latter uses a significant part of the CPU capacity.
>>
>>>
>>>> +             return true;
>>>> +
>>>>       return false;
>>>>  }
>>>>
>>>> @@ -6534,13 +6542,23 @@ static int need_active_balance(struct lb_env *env)
>>>>       struct sched_domain *sd = env->sd;
>>>>
>>>>       if (env->idle == CPU_NEWLY_IDLE) {
>>>> +             int src_cpu = env->src_cpu;
>>>>
>>>>               /*
>>>>                * ASYM_PACKING needs to force migrate tasks from busy but
>>>>                * higher numbered CPUs in order to pack all tasks in the
>>>>                * lowest numbered CPUs.
>>>>                */
>>>> -             if ((sd->flags & SD_ASYM_PACKING) && env->src_cpu > env->dst_cpu)
>>>> +             if ((sd->flags & SD_ASYM_PACKING) && src_cpu > env->dst_cpu)
>>>> +                     return 1;
>>>> +
>>>> +             /*
>>>> +              * If the CPUs share their cache and the src_cpu's capacity is
>>>> +              * reduced because of other sched_class or IRQs, we trig an
>>>> +              * active balance to move the task
>>>> +              */
>>>> +             if ((capacity_orig_of(src_cpu) * 100) > (capacity_of(src_cpu) *
>>>> +                             sd->imbalance_pct))
>>>>                       return 1;
>>>>       }
>>>>
>>>> @@ -6643,6 +6661,8 @@ static int load_balance(int this_cpu, struct rq *this_rq,
>>>>
>>>>       schedstat_add(sd, lb_imbalance[idle], env.imbalance);
>>>>
>>>> +     env.src_cpu = busiest->cpu;
>>>> +
>>>>       ld_moved = 0;
>>>>       if (busiest->nr_running > 1) {
>>>>               /*
>>>> @@ -6652,7 +6672,6 @@ static int load_balance(int this_cpu, struct rq *this_rq,
>>>>                * correctly treated as an imbalance.
>>>>                */
>>>>               env.flags |= LBF_ALL_PINNED;
>>>> -             env.src_cpu   = busiest->cpu;
>>>>               env.src_rq    = busiest;
>>>>               env.loop_max  = min(sysctl_sched_nr_migrate, busiest->nr_running);
>>>>
>>>> @@ -7359,10 +7378,12 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle)
>>>>
>>>>  /*
>>>>   * Current heuristic for kicking the idle load balancer in the presence
>>>> - * of an idle cpu is the system.
>>>> + * of an idle cpu in the system.
>>>>   *   - This rq has more than one task.
>>>> - *   - At any scheduler domain level, this cpu's scheduler group has multiple
>>>> - *     busy cpu's exceeding the group's capacity.
>>>> + *   - This rq has at least one CFS task and the capacity of the CPU is
>>>> + *     significantly reduced because of RT tasks or IRQs.
>>>> + *   - At parent of LLC scheduler domain level, this cpu's scheduler group has
>>>> + *     multiple busy cpu.
>>>>   *   - For SD_ASYM_PACKING, if the lower numbered cpu's in the scheduler
>>>>   *     domain span are idle.
>>>>   */
>>>> @@ -7372,9 +7393,10 @@ static inline int nohz_kick_needed(struct rq *rq)
>>>>       struct sched_domain *sd;
>>>>       struct sched_group_capacity *sgc;
>>>>       int nr_busy, cpu = rq->cpu;
>>>> +     bool kick = false;
>>>>
>>>>       if (unlikely(rq->idle_balance))
>>>> -             return 0;
>>>> +             return false;
>>>>
>>>>         /*
>>>>       * We may be recently in ticked or tickless idle mode. At the first
>>>> @@ -7388,38 +7410,45 @@ static inline int nohz_kick_needed(struct rq *rq)
>>>>        * balancing.
>>>>        */
>>>>       if (likely(!atomic_read(&nohz.nr_cpus)))
>>>> -             return 0;
>>>> +             return false;
>>>>
>>>>       if (time_before(now, nohz.next_balance))
>>>> -             return 0;
>>>> +             return false;
>>>>
>>>>       if (rq->nr_running >= 2)
>>>
>>> Will this check ^^ not catch those cases which this patch is targeting?
>>
>> This patch is not about how many tasks are running but if the capacity
>> of the CPU is reduced because of side activity like interruptions
>> which are only visible in the capacity value (with IRQ_TIME_ACCOUNTING
>> config) but not in nr_running.
>> Even if the capacity is reduced because of RT tasks, nothing ensures
>> that the RT task will be running when the tick fires
>>
>> Regards,
>> Vincent
>>>
>>> Regards
>>> Preeti U Murthy
>>>
>>>> -             goto need_kick;
>>>> +             return true;
>>>>
>>>>       rcu_read_lock();
>>>>       sd = rcu_dereference(per_cpu(sd_busy, cpu));
>>>> -
>>>>       if (sd) {
>>>>               sgc = sd->groups->sgc;
>>>>               nr_busy = atomic_read(&sgc->nr_busy_cpus);
>>>>
>>>> -             if (nr_busy > 1)
>>>> -                     goto need_kick_unlock;
>>>> +             if (nr_busy > 1) {
>>>> +                     kick = true;
>>>> +                     goto unlock;
>>>> +             }
>>>> +
>>>>       }
>>>>
>>>> -     sd = rcu_dereference(per_cpu(sd_asym, cpu));
>>>> +     sd = rcu_dereference(rq->sd);
>>>> +     if (sd) {
>>>> +             if ((rq->cfs.h_nr_running >= 1) &&
>>>> +                             ((rq->cpu_capacity * sd->imbalance_pct) <
>>>> +                             (rq->cpu_capacity_orig * 100))) {
>
> Ok I understand your explanation above. But I was wondering if you would
> need to add this check around rq->cfs.h_nr_running >= 1 in the above two
> cases as well.

yes you're right for the test if (rq->nr_running >= 2).

It's not so straight forward for nr_busy_cpus which reflects how many
CPUs have not stopped their tick. The scheduler assumes that the
latter are busy with cfs tasks

>
> I have actually raised this concern over whether we should be using
> rq->nr_running or cfs_rq->nr_running while we do load balancing in reply
> to your patch3. While all our load measurements are about the cfs_rq

I have just replied to your comments on patch 3. Sorry for the delay

> load, we use rq->nr_running, which may include tasks from other sched
> classes as well. We divide them to get average load per task during load
> balancing which is wrong, isn't it? Similarly during nohz_kick_needed(),
> we trigger load balancing based on rq->nr_running again.
>
> In this patch too, even if you know that the cpu is being dominated by
> tasks that do not belong to cfs class, you would be triggering a futile
> load balance if there are no fair tasks to move.
This patch adds one additional condition that is based on
rq->cfs.h_nr_running so it should not trigger any futile load balance.
Then, I have also take advantage of this patch to clean up
nohz_kick_needed as proposed by Peter but the conditions are the same
than previously (except the one with rq->cfs.h_nr_running)

I can prepare another patchset that will solve the concerns that you
raised for nohz_kick_needed and in patch 3 but i would prefer not
include them in this patchset which is large enough and which subject
is a bit different.
Does it seem ok for you ?

Regards,
Vincent
>
> Regards
> Preeti U Murthy
>

WARNING: multiple messages have this Message-ID (diff)
From: vincent.guittot@linaro.org (Vincent Guittot)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 08/12] sched: move cfs task on a CPU with higher capacity
Date: Wed, 3 Sep 2014 13:44:58 +0200	[thread overview]
Message-ID: <CAKfTPtCXBYSbXVgdeyMtvuK8aZaRBzhs9S3=+V2jvXnoCJFqBQ@mail.gmail.com> (raw)
In-Reply-To: <5406DB43.1030506@linux.vnet.ibm.com>

On 3 September 2014 11:11, Preeti U Murthy <preeti@linux.vnet.ibm.com> wrote:
> On 09/01/2014 02:15 PM, Vincent Guittot wrote:
>> On 30 August 2014 19:50, Preeti U Murthy <preeti@linux.vnet.ibm.com> wrote:
>>> Hi Vincent,
>>>> index 18db43e..60ae1ce 100644
>>>> --- a/kernel/sched/fair.c
>>>> +++ b/kernel/sched/fair.c
>>>> @@ -6049,6 +6049,14 @@ static bool update_sd_pick_busiest(struct lb_env *env,
>>>>                       return true;
>>>>       }
>>>>
>>>> +     /*
>>>> +      * The group capacity is reduced probably because of activity from other
>>>> +      * sched class or interrupts which use part of the available capacity
>>>> +      */
>>>> +     if ((sg->sgc->capacity_orig * 100) > (sgs->group_capacity *
>>>> +                             env->sd->imbalance_pct))
>>>
>>> Wouldn't the check on avg_load let us know if we are packing more tasks
>>> in this group than its capacity ? Isn't that the metric we are more
>>> interested in?
>>
>> With  this patch, we don't want to pack but we prefer to spread the
>> task on another CPU than the one which handles the interruption if
>> latter uses a significant part of the CPU capacity.
>>
>>>
>>>> +             return true;
>>>> +
>>>>       return false;
>>>>  }
>>>>
>>>> @@ -6534,13 +6542,23 @@ static int need_active_balance(struct lb_env *env)
>>>>       struct sched_domain *sd = env->sd;
>>>>
>>>>       if (env->idle == CPU_NEWLY_IDLE) {
>>>> +             int src_cpu = env->src_cpu;
>>>>
>>>>               /*
>>>>                * ASYM_PACKING needs to force migrate tasks from busy but
>>>>                * higher numbered CPUs in order to pack all tasks in the
>>>>                * lowest numbered CPUs.
>>>>                */
>>>> -             if ((sd->flags & SD_ASYM_PACKING) && env->src_cpu > env->dst_cpu)
>>>> +             if ((sd->flags & SD_ASYM_PACKING) && src_cpu > env->dst_cpu)
>>>> +                     return 1;
>>>> +
>>>> +             /*
>>>> +              * If the CPUs share their cache and the src_cpu's capacity is
>>>> +              * reduced because of other sched_class or IRQs, we trig an
>>>> +              * active balance to move the task
>>>> +              */
>>>> +             if ((capacity_orig_of(src_cpu) * 100) > (capacity_of(src_cpu) *
>>>> +                             sd->imbalance_pct))
>>>>                       return 1;
>>>>       }
>>>>
>>>> @@ -6643,6 +6661,8 @@ static int load_balance(int this_cpu, struct rq *this_rq,
>>>>
>>>>       schedstat_add(sd, lb_imbalance[idle], env.imbalance);
>>>>
>>>> +     env.src_cpu = busiest->cpu;
>>>> +
>>>>       ld_moved = 0;
>>>>       if (busiest->nr_running > 1) {
>>>>               /*
>>>> @@ -6652,7 +6672,6 @@ static int load_balance(int this_cpu, struct rq *this_rq,
>>>>                * correctly treated as an imbalance.
>>>>                */
>>>>               env.flags |= LBF_ALL_PINNED;
>>>> -             env.src_cpu   = busiest->cpu;
>>>>               env.src_rq    = busiest;
>>>>               env.loop_max  = min(sysctl_sched_nr_migrate, busiest->nr_running);
>>>>
>>>> @@ -7359,10 +7378,12 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle)
>>>>
>>>>  /*
>>>>   * Current heuristic for kicking the idle load balancer in the presence
>>>> - * of an idle cpu is the system.
>>>> + * of an idle cpu in the system.
>>>>   *   - This rq has more than one task.
>>>> - *   - At any scheduler domain level, this cpu's scheduler group has multiple
>>>> - *     busy cpu's exceeding the group's capacity.
>>>> + *   - This rq has at least one CFS task and the capacity of the CPU is
>>>> + *     significantly reduced because of RT tasks or IRQs.
>>>> + *   - At parent of LLC scheduler domain level, this cpu's scheduler group has
>>>> + *     multiple busy cpu.
>>>>   *   - For SD_ASYM_PACKING, if the lower numbered cpu's in the scheduler
>>>>   *     domain span are idle.
>>>>   */
>>>> @@ -7372,9 +7393,10 @@ static inline int nohz_kick_needed(struct rq *rq)
>>>>       struct sched_domain *sd;
>>>>       struct sched_group_capacity *sgc;
>>>>       int nr_busy, cpu = rq->cpu;
>>>> +     bool kick = false;
>>>>
>>>>       if (unlikely(rq->idle_balance))
>>>> -             return 0;
>>>> +             return false;
>>>>
>>>>         /*
>>>>       * We may be recently in ticked or tickless idle mode. At the first
>>>> @@ -7388,38 +7410,45 @@ static inline int nohz_kick_needed(struct rq *rq)
>>>>        * balancing.
>>>>        */
>>>>       if (likely(!atomic_read(&nohz.nr_cpus)))
>>>> -             return 0;
>>>> +             return false;
>>>>
>>>>       if (time_before(now, nohz.next_balance))
>>>> -             return 0;
>>>> +             return false;
>>>>
>>>>       if (rq->nr_running >= 2)
>>>
>>> Will this check ^^ not catch those cases which this patch is targeting?
>>
>> This patch is not about how many tasks are running but if the capacity
>> of the CPU is reduced because of side activity like interruptions
>> which are only visible in the capacity value (with IRQ_TIME_ACCOUNTING
>> config) but not in nr_running.
>> Even if the capacity is reduced because of RT tasks, nothing ensures
>> that the RT task will be running when the tick fires
>>
>> Regards,
>> Vincent
>>>
>>> Regards
>>> Preeti U Murthy
>>>
>>>> -             goto need_kick;
>>>> +             return true;
>>>>
>>>>       rcu_read_lock();
>>>>       sd = rcu_dereference(per_cpu(sd_busy, cpu));
>>>> -
>>>>       if (sd) {
>>>>               sgc = sd->groups->sgc;
>>>>               nr_busy = atomic_read(&sgc->nr_busy_cpus);
>>>>
>>>> -             if (nr_busy > 1)
>>>> -                     goto need_kick_unlock;
>>>> +             if (nr_busy > 1) {
>>>> +                     kick = true;
>>>> +                     goto unlock;
>>>> +             }
>>>> +
>>>>       }
>>>>
>>>> -     sd = rcu_dereference(per_cpu(sd_asym, cpu));
>>>> +     sd = rcu_dereference(rq->sd);
>>>> +     if (sd) {
>>>> +             if ((rq->cfs.h_nr_running >= 1) &&
>>>> +                             ((rq->cpu_capacity * sd->imbalance_pct) <
>>>> +                             (rq->cpu_capacity_orig * 100))) {
>
> Ok I understand your explanation above. But I was wondering if you would
> need to add this check around rq->cfs.h_nr_running >= 1 in the above two
> cases as well.

yes you're right for the test if (rq->nr_running >= 2).

It's not so straight forward for nr_busy_cpus which reflects how many
CPUs have not stopped their tick. The scheduler assumes that the
latter are busy with cfs tasks

>
> I have actually raised this concern over whether we should be using
> rq->nr_running or cfs_rq->nr_running while we do load balancing in reply
> to your patch3. While all our load measurements are about the cfs_rq

I have just replied to your comments on patch 3. Sorry for the delay

> load, we use rq->nr_running, which may include tasks from other sched
> classes as well. We divide them to get average load per task during load
> balancing which is wrong, isn't it? Similarly during nohz_kick_needed(),
> we trigger load balancing based on rq->nr_running again.
>
> In this patch too, even if you know that the cpu is being dominated by
> tasks that do not belong to cfs class, you would be triggering a futile
> load balance if there are no fair tasks to move.
This patch adds one additional condition that is based on
rq->cfs.h_nr_running so it should not trigger any futile load balance.
Then, I have also take advantage of this patch to clean up
nohz_kick_needed as proposed by Peter but the conditions are the same
than previously (except the one with rq->cfs.h_nr_running)

I can prepare another patchset that will solve the concerns that you
raised for nohz_kick_needed and in patch 3 but i would prefer not
include them in this patchset which is large enough and which subject
is a bit different.
Does it seem ok for you ?

Regards,
Vincent
>
> Regards
> Preeti U Murthy
>

  reply	other threads:[~2014-09-03 11:45 UTC|newest]

Thread overview: 164+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-26 11:06 [PATCH v5 00/12] sched: consolidation of cpu_capacity Vincent Guittot
2014-08-26 11:06 ` Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 01/12] sched: fix imbalance flag reset Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-09-19 11:47   ` [tip:sched/core] sched: Fix " tip-bot for Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 02/12] sched: remove a wake_affine condition Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-09-19 11:47   ` [tip:sched/core] sched: Remove a wake_affine() condition tip-bot for Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 03/12] sched: fix avg_load computation Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-08-30 12:00   ` Preeti U Murthy
2014-08-30 12:00     ` Preeti U Murthy
2014-09-03 11:09     ` Vincent Guittot
2014-09-03 11:09       ` Vincent Guittot
2014-09-03 23:43       ` Tim Chen
2014-09-03 23:43         ` Tim Chen
2014-09-04  7:17         ` Vincent Guittot
2014-09-04  7:17           ` Vincent Guittot
2014-09-04 16:26           ` Tim Chen
2014-09-04 16:26             ` Tim Chen
2014-09-05 11:10   ` Preeti U Murthy
2014-09-05 11:10     ` Preeti U Murthy
2014-09-19 11:47   ` [tip:sched/core] sched: Fix " tip-bot for Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 04/12] sched: Allow all archs to set the capacity_orig Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-08-27 13:12   ` Kamalesh Babulal
2014-08-27 13:12     ` Kamalesh Babulal
2014-08-30 17:07   ` Preeti U Murthy
2014-08-30 17:07     ` Preeti U Murthy
2014-09-01  8:05     ` Vincent Guittot
2014-09-01  8:05       ` Vincent Guittot
2014-09-03  8:41       ` Preeti U Murthy
2014-09-03  8:41         ` Preeti U Murthy
2014-09-10 13:50     ` Peter Zijlstra
2014-09-10 13:50       ` Peter Zijlstra
2014-09-10 14:22       ` Vincent Guittot
2014-09-10 14:22         ` Vincent Guittot
2014-09-11 10:36       ` Preeti U Murthy
2014-09-11 10:36         ` Preeti U Murthy
2014-09-19 11:47   ` [tip:sched/core] sched: Allow all architectures to set ' capacity_orig' tip-bot for Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 05/12] ARM: topology: use new cpu_capacity interface Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-09-11 18:52   ` Nicolas Pitre
2014-09-11 18:52     ` Nicolas Pitre
2014-09-19 11:48   ` [tip:sched/core] ARM: topology: Use the " tip-bot for Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 06/12] sched: add per rq cpu_capacity_orig Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-08-27 13:32   ` Kamalesh Babulal
2014-08-27 13:32     ` Kamalesh Babulal
2014-08-28  7:34     ` Vincent Guittot
2014-08-28  7:34       ` Vincent Guittot
2014-09-10 13:53   ` Peter Zijlstra
2014-09-10 13:53     ` Peter Zijlstra
2014-09-10 14:19     ` Vincent Guittot
2014-09-10 14:19       ` Vincent Guittot
2014-09-11 19:02   ` Nicolas Pitre
2014-09-11 19:02     ` Nicolas Pitre
2014-09-15 21:22     ` Vincent Guittot
2014-09-15 21:22       ` Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 07/12] sched: test the cpu's capacity in wake affine Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-09-10 14:19   ` Peter Zijlstra
2014-09-10 14:19     ` Peter Zijlstra
2014-09-19 11:48   ` [tip:sched/core] sched: Test the CPU's capacity in wake_affine() tip-bot for Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 08/12] sched: move cfs task on a CPU with higher capacity Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-08-30 17:50   ` Preeti U Murthy
2014-08-30 17:50     ` Preeti U Murthy
2014-09-01  8:45     ` Vincent Guittot
2014-09-01  8:45       ` Vincent Guittot
2014-09-03  9:11       ` Preeti U Murthy
2014-09-03  9:11         ` Preeti U Murthy
2014-09-03 11:44         ` Vincent Guittot [this message]
2014-09-03 11:44           ` Vincent Guittot
2014-09-03 12:26           ` Preeti U Murthy
2014-09-03 12:26             ` Preeti U Murthy
2014-09-03 12:49             ` Vincent Guittot
2014-09-03 12:49               ` Vincent Guittot
2014-09-11  9:27             ` Peter Zijlstra
2014-09-11  9:27               ` Peter Zijlstra
2014-09-05 12:06   ` Preeti U Murthy
2014-09-05 12:06     ` Preeti U Murthy
2014-09-05 12:24     ` Vincent Guittot
2014-09-05 12:24       ` Vincent Guittot
2014-09-11 10:07   ` Peter Zijlstra
2014-09-11 10:07     ` Peter Zijlstra
2014-09-11 11:20     ` Vincent Guittot
2014-09-11 11:20       ` Vincent Guittot
2014-09-11 10:13   ` Peter Zijlstra
2014-09-11 10:13     ` Peter Zijlstra
2014-09-11 12:14     ` Vincent Guittot
2014-09-11 12:14       ` Vincent Guittot
2014-09-11 11:54   ` Peter Zijlstra
2014-09-11 11:54     ` Peter Zijlstra
2014-08-26 11:06 ` [PATCH v5 09/12] sched: add usage_load_avg Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-09-04  7:34   ` [PATCH v5 09/11] " Vincent Guittot
2014-09-04  7:34     ` Vincent Guittot
2014-09-11 11:17     ` Peter Zijlstra
2014-09-11 11:17       ` Peter Zijlstra
2014-09-11 11:17   ` [PATCH v5 09/12] " Peter Zijlstra
2014-09-11 11:17     ` Peter Zijlstra
2014-09-11 12:18     ` Vincent Guittot
2014-09-11 12:18       ` Vincent Guittot
2014-09-11 12:20     ` Vincent Guittot
2014-09-11 12:20       ` Vincent Guittot
2014-09-15 19:15   ` Morten Rasmussen
2014-09-15 19:15     ` Morten Rasmussen
2014-09-15 22:33     ` Vincent Guittot
2014-09-15 22:33       ` Vincent Guittot
2014-08-26 11:06 ` [PATCH v5 10/12] sched: get CPU's utilization statistic Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-09-11 12:34   ` Peter Zijlstra
2014-09-11 12:34     ` Peter Zijlstra
2014-09-11 13:07     ` Vincent Guittot
2014-09-11 13:07       ` Vincent Guittot
2014-09-11 14:04       ` Peter Zijlstra
2014-09-11 14:04         ` Peter Zijlstra
2014-09-11 19:17         ` Nicolas Pitre
2014-09-11 19:17           ` Nicolas Pitre
2014-09-12  7:41           ` Vincent Guittot
2014-09-12  7:41             ` Vincent Guittot
2014-09-15 19:45         ` Morten Rasmussen
2014-09-15 19:45           ` Morten Rasmussen
2014-09-16 22:43           ` Vincent Guittot
2014-09-16 22:43             ` Vincent Guittot
2014-09-15 19:28     ` Morten Rasmussen
2014-09-15 19:28       ` Morten Rasmussen
2014-08-26 11:06 ` [PATCH v5 11/12] sched: replace capacity_factor by utilization Vincent Guittot
2014-08-26 11:06   ` Vincent Guittot
2014-09-11 15:39   ` Peter Zijlstra
2014-09-11 15:39     ` Peter Zijlstra
2014-09-11 16:15   ` Peter Zijlstra
2014-09-11 16:15     ` Peter Zijlstra
2014-09-11 17:26     ` Vincent Guittot
2014-09-11 17:26       ` Vincent Guittot
2014-09-14 19:41       ` Peter Zijlstra
2014-09-14 19:41         ` Peter Zijlstra
2014-09-14 19:51         ` Peter Zijlstra
2014-09-14 19:51           ` Peter Zijlstra
2014-09-15 11:42         ` Peter Zijlstra
2014-09-15 11:42           ` Peter Zijlstra
2014-09-15 19:07           ` Nicolas Pitre
2014-09-15 19:07             ` Nicolas Pitre
2014-09-15 20:01             ` Peter Zijlstra
2014-09-15 20:01               ` Peter Zijlstra
2014-09-17 18:45               ` Morten Rasmussen
2014-09-17 18:45                 ` Morten Rasmussen
2014-09-17 18:58                 ` Morten Rasmussen
2014-09-17 18:58                   ` Morten Rasmussen
2014-09-17 23:03                 ` Peter Zijlstra
2014-09-17 23:03                   ` Peter Zijlstra
2014-09-15 22:14           ` Vincent Guittot
2014-09-15 22:14             ` Vincent Guittot
2014-09-15 22:18             ` Vincent Guittot
2014-09-15 22:18               ` Vincent Guittot
2014-09-17 22:25             ` Peter Zijlstra
2014-09-17 22:25               ` Peter Zijlstra
2014-09-18  1:32               ` Vincent Guittot
2014-09-18  1:32                 ` Vincent Guittot
2014-09-16 17:00         ` Dietmar Eggemann
2014-09-16 17:00           ` Dietmar Eggemann
2014-08-26 11:06 ` [PATCH v5 12/12] sched: add SD_PREFER_SIBLING for SMT level Vincent Guittot
2014-08-26 11:06   ` 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='CAKfTPtCXBYSbXVgdeyMtvuK8aZaRBzhs9S3=+V2jvXnoCJFqBQ@mail.gmail.com' \
    --to=vincent.guittot@linaro.org \
    --cc=Morten.Rasmussen@arm.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=dietmar.eggemann@arm.com \
    --cc=efault@gmx.de \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mingo@kernel.org \
    --cc=nicolas.pitre@linaro.org \
    --cc=peterz@infradead.org \
    --cc=preeti@linux.vnet.ibm.com \
    --cc=riel@redhat.com \
    /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.