From: francescolavra.fl@gmail.com (Francesco Lavra)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 10/14] sched: update the buddy CPU
Date: Sun, 28 Apr 2013 10:20:43 +0200 [thread overview]
Message-ID: <517CDBDB.1020608@gmail.com> (raw)
In-Reply-To: <1366910611-20048-11-git-send-email-vincent.guittot@linaro.org>
Hi,
On 04/25/2013 07:23 PM, Vincent Guittot wrote:
> Periodically updates the buddy of a CPU according to the current activity of
> the system. A CPU is its own buddy if it participates to the packing effort.
> Otherwise, it points to a CPU that participates to the packing effort.
>
> Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
> ---
> kernel/sched/fair.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 86 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 234ecdd..28f8ea7 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -174,11 +174,17 @@ void sched_init_granularity(void)
>
>
> #ifdef CONFIG_SMP
> +static unsigned long power_of(int cpu)
> +{
> + return cpu_rq(cpu)->cpu_power;
> +}
> +
> /*
> * Save the id of the optimal CPU that should be used to pack small tasks
> * The value -1 is used when no buddy has been found
> */
> DEFINE_PER_CPU(int, sd_pack_buddy);
> +DEFINE_PER_CPU(struct sched_domain *, sd_pack_domain);
>
> /*
> * Look for the best buddy CPU that can be used to pack small tasks
> @@ -237,6 +243,68 @@ void update_packing_domain(int cpu)
> }
>
> pr_debug("CPU%d packing on CPU%d\n", cpu, id);
> + per_cpu(sd_pack_domain, cpu) = sd;
> + per_cpu(sd_pack_buddy, cpu) = id;
> +}
> +
> +void update_packing_buddy(int cpu, int activity)
> +{
> + struct sched_domain *sd = per_cpu(sd_pack_domain, cpu);
> + struct sched_group *sg, *pack, *tmp;
> + int id = cpu;
> +
> + if (!sd)
> + return;
> +
> + /*
> + * The sched_domain of a CPU points on the local sched_group
> + * and this CPU of this local group is a good candidate
> + */
> + pack = sg = sd->groups;
> +
> + /* loop the sched groups to find the best one */
> + for (tmp = sg->next; tmp != sg; tmp = tmp->next) {
> + if ((tmp->sgp->power * pack->group_weight) >
> + (pack->sgp->power_available * tmp->group_weight))
The power_available struct member is defined in a subsequent patch
(12/14), so this patch series would break git bisect.
--
Francesco
WARNING: multiple messages have this Message-ID (diff)
From: Francesco Lavra <francescolavra.fl@gmail.com>
To: Vincent Guittot <vincent.guittot@linaro.org>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linaro-kernel@lists.linaro.org, peterz@infradead.org,
mingo@kernel.org, linux@arm.linux.org.uk, pjt@google.com,
santosh.shilimkar@ti.com, Morten.Rasmussen@arm.com,
chander.kashyap@linaro.org, cmetcalf@tilera.com,
tony.luck@intel.com, alex.shi@intel.com,
preeti@linux.vnet.ibm.com, len.brown@intel.com,
l.majewski@samsung.com, corbet@lwn.net,
paulmck@linux.vnet.ibm.com, arjan@linux.intel.com
Subject: Re: [PATCH 10/14] sched: update the buddy CPU
Date: Sun, 28 Apr 2013 10:20:43 +0200 [thread overview]
Message-ID: <517CDBDB.1020608@gmail.com> (raw)
In-Reply-To: <1366910611-20048-11-git-send-email-vincent.guittot@linaro.org>
Hi,
On 04/25/2013 07:23 PM, Vincent Guittot wrote:
> Periodically updates the buddy of a CPU according to the current activity of
> the system. A CPU is its own buddy if it participates to the packing effort.
> Otherwise, it points to a CPU that participates to the packing effort.
>
> Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
> ---
> kernel/sched/fair.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 86 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 234ecdd..28f8ea7 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -174,11 +174,17 @@ void sched_init_granularity(void)
>
>
> #ifdef CONFIG_SMP
> +static unsigned long power_of(int cpu)
> +{
> + return cpu_rq(cpu)->cpu_power;
> +}
> +
> /*
> * Save the id of the optimal CPU that should be used to pack small tasks
> * The value -1 is used when no buddy has been found
> */
> DEFINE_PER_CPU(int, sd_pack_buddy);
> +DEFINE_PER_CPU(struct sched_domain *, sd_pack_domain);
>
> /*
> * Look for the best buddy CPU that can be used to pack small tasks
> @@ -237,6 +243,68 @@ void update_packing_domain(int cpu)
> }
>
> pr_debug("CPU%d packing on CPU%d\n", cpu, id);
> + per_cpu(sd_pack_domain, cpu) = sd;
> + per_cpu(sd_pack_buddy, cpu) = id;
> +}
> +
> +void update_packing_buddy(int cpu, int activity)
> +{
> + struct sched_domain *sd = per_cpu(sd_pack_domain, cpu);
> + struct sched_group *sg, *pack, *tmp;
> + int id = cpu;
> +
> + if (!sd)
> + return;
> +
> + /*
> + * The sched_domain of a CPU points on the local sched_group
> + * and this CPU of this local group is a good candidate
> + */
> + pack = sg = sd->groups;
> +
> + /* loop the sched groups to find the best one */
> + for (tmp = sg->next; tmp != sg; tmp = tmp->next) {
> + if ((tmp->sgp->power * pack->group_weight) >
> + (pack->sgp->power_available * tmp->group_weight))
The power_available struct member is defined in a subsequent patch
(12/14), so this patch series would break git bisect.
--
Francesco
next prev parent reply other threads:[~2013-04-28 8:20 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-25 17:23 [RFC PATCH v4 00/14] sched: packing small tasks Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 01/14] Revert "sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking" Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 02/14] sched: add a new SD_SHARE_POWERDOMAIN flag for sched_domain Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 03/14] sched: pack small tasks Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-26 12:30 ` Peter Zijlstra
2013-04-26 12:30 ` Peter Zijlstra
2013-04-26 13:16 ` Vincent Guittot
2013-04-26 13:16 ` Vincent Guittot
2013-04-26 12:38 ` Peter Zijlstra
2013-04-26 12:38 ` Peter Zijlstra
2013-04-26 13:38 ` Vincent Guittot
2013-04-26 13:38 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 04/14] sched: pack the idle load balance Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-26 12:49 ` Peter Zijlstra
2013-04-26 12:49 ` Peter Zijlstra
2013-04-26 13:47 ` Vincent Guittot
2013-04-26 13:47 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 05/14] ARM: sched: clear SD_SHARE_POWERDOMAIN Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 06/14] sched: add a knob to choose the packing level Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 07/14] sched: agressively pack at wake/fork/exec Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-26 13:08 ` Peter Zijlstra
2013-04-26 13:08 ` Peter Zijlstra
2013-04-26 14:23 ` Vincent Guittot
2013-04-26 14:23 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 08/14] sched: trig ILB on an idle buddy Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-26 13:15 ` Peter Zijlstra
2013-04-26 13:15 ` Peter Zijlstra
2013-04-26 14:52 ` Vincent Guittot
2013-04-26 14:52 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 09/14] sched: evaluate the activity level of the system Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-05-22 16:50 ` Morten Rasmussen
2013-05-23 8:11 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 10/14] sched: update the buddy CPU Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-28 8:20 ` Francesco Lavra [this message]
2013-04-28 8:20 ` Francesco Lavra
2013-04-29 7:32 ` Vincent Guittot
2013-04-29 7:32 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 11/14] sched: filter task pull request Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-26 10:00 ` Vincent Guittot
2013-04-26 10:00 ` Vincent Guittot
2013-05-22 15:56 ` Morten Rasmussen
2013-05-22 15:56 ` Morten Rasmussen
2013-05-22 16:03 ` Vincent Guittot
2013-05-22 16:03 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 12/14] sched: create a new field with available capacity Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 13/14] sched: update the cpu_power Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-05-22 15:46 ` Morten Rasmussen
2013-05-22 15:58 ` Vincent Guittot
2013-04-25 17:23 ` [PATCH 14/14] sched: force migration on buddy CPU Vincent Guittot
2013-04-25 17:23 ` Vincent Guittot
2013-04-26 12:08 ` [RFC PATCH v4 00/14] sched: packing small tasks Vincent Guittot
2013-04-26 12:08 ` Vincent Guittot
2013-04-26 15:00 ` Arjan van de Ven
2013-04-26 15:00 ` Arjan van de Ven
2013-04-26 15:40 ` Vincent Guittot
2013-04-26 15:40 ` Vincent Guittot
2013-04-26 15:46 ` Arjan van de Ven
2013-04-26 15:46 ` Arjan van de Ven
2013-04-26 15:56 ` Vincent Guittot
2013-04-26 15:56 ` Vincent Guittot
2013-05-02 9:12 ` Vincent Guittot
2013-05-02 9:12 ` 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=517CDBDB.1020608@gmail.com \
--to=francescolavra.fl@gmail.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 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.