lkml.org 
[lkml]   [2011]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:sched/domains] sched: Simplify ->cpu_power initialization
    Commit-ID:  d274cb30f4a08045492d3f0c47cdf1a25668b1f5
    Gitweb: http://git.kernel.org/tip/d274cb30f4a08045492d3f0c47cdf1a25668b1f5
    Author: Peter Zijlstra <a.p.zijlstra@chello.nl>
    AuthorDate: Thu, 7 Apr 2011 14:09:43 +0200
    Committer: Ingo Molnar <mingo@elte.hu>
    CommitDate: Mon, 11 Apr 2011 12:58:16 +0200

    sched: Simplify ->cpu_power initialization

    The code in update_group_power() does what init_sched_groups_power()
    does and more, so remove the special init_ code and call the generic
    code instead.

    Also move the sd->span_weight initialization because
    update_group_power() needs it.

    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Nick Piggin <npiggin@kernel.dk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20110407122941.875856012@chello.nl
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    ---
    kernel/sched.c | 44 +++++---------------------------------------
    1 files changed, 5 insertions(+), 39 deletions(-)

    diff --git a/kernel/sched.c b/kernel/sched.c
    index d3e183c..50d5fd3 100644
    --- a/kernel/sched.c
    +++ b/kernel/sched.c
    @@ -6679,9 +6679,6 @@ cpu_attach_domain(struct sched_domain *sd, struct root_domain *rd, int cpu)
    struct rq *rq = cpu_rq(cpu);
    struct sched_domain *tmp;

    - for (tmp = sd; tmp; tmp = tmp->parent)
    - tmp->span_weight = cpumask_weight(sched_domain_span(tmp));
    -
    /* Remove the sched domains which do not contribute to scheduling. */
    for (tmp = sd; tmp; ) {
    struct sched_domain *parent = tmp->parent;
    @@ -7159,11 +7156,6 @@ static void free_sched_groups(const struct cpumask *cpu_map,
    */
    static void init_sched_groups_power(int cpu, struct sched_domain *sd)
    {
    - struct sched_domain *child;
    - struct sched_group *group;
    - long power;
    - int weight;
    -
    WARN_ON(!sd || !sd->groups);

    if (cpu != group_first_cpu(sd->groups))
    @@ -7171,36 +7163,7 @@ static void init_sched_groups_power(int cpu, struct sched_domain *sd)

    sd->groups->group_weight = cpumask_weight(sched_group_cpus(sd->groups));

    - child = sd->child;
    -
    - sd->groups->cpu_power = 0;
    -
    - if (!child) {
    - power = SCHED_LOAD_SCALE;
    - weight = cpumask_weight(sched_domain_span(sd));
    - /*
    - * SMT siblings share the power of a single core.
    - * Usually multiple threads get a better yield out of
    - * that one core than a single thread would have,
    - * reflect that in sd->smt_gain.
    - */
    - if ((sd->flags & SD_SHARE_CPUPOWER) && weight > 1) {
    - power *= sd->smt_gain;
    - power /= weight;
    - power >>= SCHED_LOAD_SHIFT;
    - }
    - sd->groups->cpu_power += power;
    - return;
    - }
    -
    - /*
    - * Add cpu_power of each child group to this groups cpu_power.
    - */
    - group = child->groups;
    - do {
    - sd->groups->cpu_power += group->cpu_power;
    - group = group->next;
    - } while (group != child->groups);
    + update_group_power(sd, cpu);
    }

    /*
    @@ -7507,7 +7470,7 @@ static int __build_sched_domains(const struct cpumask *cpu_map,
    {
    enum s_alloc alloc_state = sa_none;
    struct s_data d;
    - struct sched_domain *sd;
    + struct sched_domain *sd, *tmp;
    int i;
    #ifdef CONFIG_NUMA
    d.sd_allnodes = 0;
    @@ -7530,6 +7493,9 @@ static int __build_sched_domains(const struct cpumask *cpu_map,
    sd = __build_book_sched_domain(&d, cpu_map, attr, sd, i);
    sd = __build_mc_sched_domain(&d, cpu_map, attr, sd, i);
    sd = __build_smt_sched_domain(&d, cpu_map, attr, sd, i);
    +
    + for (tmp = sd; tmp; tmp = tmp->parent)
    + tmp->span_weight = cpumask_weight(sched_domain_span(tmp));
    }

    for_each_cpu(i, cpu_map) {

    \
     
     \ /
      Last update: 2011-04-11 16:37    [W:0.029 / U:0.140 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site