lkml.org 
[lkml]   [2010]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v2 2/8] sched: Introduce a function to update the idle statistics
    From: Arjan van de Ven <arjan@linux.intel.com>

    Currently, two places update the idle statistics (and more to
    come later in this series).

    This patch creates a helper function for updating these statistics.

    Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Rik van Riel <riel@redhat.com>

    ---

    kernel/time/tick-sched.c | 29 +++++++++++++++++++----------
    1 file changed, 19 insertions(+), 10 deletions(-)

    diff -puN kernel/time/tick-sched.c~sched-introduce-a-function-to-update-the-idle-statistics kernel/time/tick-sched.c
    --- a/kernel/time/tick-sched.c~sched-introduce-a-function-to-update-the-idle-statistics
    +++ a/kernel/time/tick-sched.c
    @@ -150,14 +150,25 @@ static void tick_nohz_update_jiffies(kti
    touch_softlockup_watchdog();
    }

    -static void tick_nohz_stop_idle(int cpu, ktime_t now)
    +/*
    + * Updates the per cpu time idle statistics counters
    + */
    +static void update_ts_time_stats(struct tick_sched *ts, ktime_t now)
    {
    - struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
    ktime_t delta;

    - delta = ktime_sub(now, ts->idle_entrytime);
    ts->idle_lastupdate = now;
    - ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta);
    + if (ts->idle_active) {
    + delta = ktime_sub(now, ts->idle_entrytime);
    + ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta);
    + }
    +}
    +
    +static void tick_nohz_stop_idle(int cpu, ktime_t now)
    +{
    + struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
    +
    + update_ts_time_stats(ts, now);
    ts->idle_active = 0;

    sched_clock_idle_wakeup_event(0);
    @@ -165,14 +176,12 @@ static void tick_nohz_stop_idle(int cpu,

    static ktime_t tick_nohz_start_idle(struct tick_sched *ts)
    {
    - ktime_t now, delta;
    + ktime_t now;

    now = ktime_get();
    - if (ts->idle_active) {
    - delta = ktime_sub(now, ts->idle_entrytime);
    - ts->idle_lastupdate = now;
    - ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta);
    - }
    +
    + update_ts_time_stats(ts, now);
    +
    ts->idle_entrytime = now;
    ts->idle_active = 1;
    sched_clock_idle_sleep_event();
    _

    \
     
     \ /
      Last update: 2010-05-09 17:27    [W:0.021 / U:63.080 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site