lkml.org 
[lkml]   [2012]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:sched/core] sched: Change rq->nr_running to unsigned int
    Commit-ID:  c82513e513556a04f81aa511cd890acd23349c48
    Gitweb: http://git.kernel.org/tip/c82513e513556a04f81aa511cd890acd23349c48
    Author: Peter Zijlstra <a.p.zijlstra@chello.nl>
    AuthorDate: Thu, 26 Apr 2012 13:12:27 +0200
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitDate: Wed, 9 May 2012 15:00:49 +0200

    sched: Change rq->nr_running to unsigned int

    Since there's a PID space limit of 30bits (see
    futex.h:FUTEX_TID_MASK) and allocating that many tasks (assuming a
    lower bound of 2 pages per task) would still take 8T of memory it
    seems reasonable to say that unsigned int is sufficient for
    rq->nr_running.

    When we do get anywhere near that amount of tasks I suspect other
    things would go funny, load-balancer load computations would really
    need to be hoisted to 128bit etc.

    So save a few bytes and convert rq->nr_running and friends to
    unsigned int.

    Suggested-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/n/tip-y3tvyszjdmbibade5bw8zl81@git.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    kernel/sched/debug.c | 2 +-
    kernel/sched/fair.c | 8 ++++----
    kernel/sched/sched.h | 6 +++---
    3 files changed, 8 insertions(+), 8 deletions(-)

    diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
    index 09acaa1..31e4f61 100644
    --- a/kernel/sched/debug.c
    +++ b/kernel/sched/debug.c
    @@ -202,7 +202,7 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
    SPLIT_NS(spread0));
    SEQ_printf(m, " .%-30s: %d\n", "nr_spread_over",
    cfs_rq->nr_spread_over);
    - SEQ_printf(m, " .%-30s: %ld\n", "nr_running", cfs_rq->nr_running);
    + SEQ_printf(m, " .%-30s: %d\n", "nr_running", cfs_rq->nr_running);
    SEQ_printf(m, " .%-30s: %ld\n", "load", cfs_rq->load.weight);
    #ifdef CONFIG_FAIR_GROUP_SCHED
    #ifdef CONFIG_SMP
    diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
    index e955364..678966c 100644
    --- a/kernel/sched/fair.c
    +++ b/kernel/sched/fair.c
    @@ -4447,10 +4447,10 @@ redo:
    * correctly treated as an imbalance.
    */
    env.flags |= LBF_ALL_PINNED;
    - env.load_move = imbalance;
    - env.src_cpu = busiest->cpu;
    - env.src_rq = busiest;
    - env.loop_max = min_t(unsigned long, sysctl_sched_nr_migrate, busiest->nr_running);
    + env.load_move = imbalance;
    + env.src_cpu = busiest->cpu;
    + env.src_rq = busiest;
    + env.loop_max = min(sysctl_sched_nr_migrate, busiest->nr_running);

    more_balance:
    local_irq_save(flags);
    diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
    index fb3acba..7282e7b 100644
    --- a/kernel/sched/sched.h
    +++ b/kernel/sched/sched.h
    @@ -201,7 +201,7 @@ struct cfs_bandwidth { };
    /* CFS-related fields in a runqueue */
    struct cfs_rq {
    struct load_weight load;
    - unsigned long nr_running, h_nr_running;
    + unsigned int nr_running, h_nr_running;

    u64 exec_clock;
    u64 min_vruntime;
    @@ -279,7 +279,7 @@ static inline int rt_bandwidth_enabled(void)
    /* Real-Time classes' related field in a runqueue: */
    struct rt_rq {
    struct rt_prio_array active;
    - unsigned long rt_nr_running;
    + unsigned int rt_nr_running;
    #if defined CONFIG_SMP || defined CONFIG_RT_GROUP_SCHED
    struct {
    int curr; /* highest queued rt task prio */
    @@ -353,7 +353,7 @@ struct rq {
    * nr_running and cpu_load should be in the same cacheline because
    * remote CPUs use both these fields when doing load calculation.
    */
    - unsigned long nr_running;
    + unsigned int nr_running;
    #define CPU_LOAD_IDX_MAX 5
    unsigned long cpu_load[CPU_LOAD_IDX_MAX];
    unsigned long last_load_update_tick;

    \
     
     \ /
      Last update: 2012-05-09 17:02    [W:0.039 / U:0.072 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site