Re: [RFC PATCH 2/3] sched: Introduce Window-Assisted CPU utilization Tracking

2016-10-28 Thread Vikram Mulukutla
On 2016-10-28 00:46, Peter Zijlstra wrote: On Fri, Oct 28, 2016 at 12:10:41AM -0700, Vikram Mulukutla wrote: +void walt_finish_migrate(struct task_struct *p, struct rq *dest_rq, bool locked) +{ + u64 wallclock; + unsigned long flags; + + if (!p->on_rq && p->state != TASK_WAKIN

Re: [RFC PATCH 2/3] sched: Introduce Window-Assisted CPU utilization Tracking

2016-10-28 Thread Vikram Mulukutla
On 2016-10-28 00:43, Peter Zijlstra wrote: On Fri, Oct 28, 2016 at 12:10:41AM -0700, Vikram Mulukutla wrote: +u64 walt_ktime_clock(void) +{ + if (unlikely(walt_ktime_suspended)) + return ktime_to_ns(ktime_last); + return ktime_get_ns(); +} +static int walt_suspend(vo

Re: [RFC PATCH 2/3] sched: Introduce Window-Assisted CPU utilization Tracking

2016-10-28 Thread Peter Zijlstra
On Fri, Oct 28, 2016 at 12:10:41AM -0700, Vikram Mulukutla wrote: > +static int account_cpu_busy_time(struct rq *rq, struct task_struct *p, > + u64 irqtime, int event) > +{ > + if (is_idle_task(p)) { > + /* TASK_WAKE && TASK_MIGRATE is not possible o

Re: [RFC PATCH 2/3] sched: Introduce Window-Assisted CPU utilization Tracking

2016-10-28 Thread Peter Zijlstra
On Fri, Oct 28, 2016 at 12:10:41AM -0700, Vikram Mulukutla wrote: > +void walt_finish_migrate(struct task_struct *p, struct rq *dest_rq, bool > locked) > +{ > + u64 wallclock; > + unsigned long flags; > + > + if (!p->on_rq && p->state != TASK_WAKING) > + return; > + > +

Re: [RFC PATCH 2/3] sched: Introduce Window-Assisted CPU utilization Tracking

2016-10-28 Thread Peter Zijlstra
On Fri, Oct 28, 2016 at 12:10:41AM -0700, Vikram Mulukutla wrote: > +u64 walt_ktime_clock(void) > +{ > + if (unlikely(walt_ktime_suspended)) > + return ktime_to_ns(ktime_last); > + return ktime_get_ns(); > +} > +static int walt_suspend(void) > +{ > + ktime_last = ktime_get(

Re: [RFC PATCH 2/3] sched: Introduce Window-Assisted CPU utilization Tracking

2016-10-28 Thread Peter Zijlstra
On Fri, Oct 28, 2016 at 12:10:41AM -0700, Vikram Mulukutla wrote: > +static int cpu_is_waiting_on_io(struct rq *rq) > +{ > + if (!walt_io_is_busy) > + return 0; > + > + return atomic_read(&rq->nr_iowait); > +} This is just drug induced nonsense. The per-cpu nr_iowait number is

[RFC PATCH 2/3] sched: Introduce Window-Assisted CPU utilization Tracking

2016-10-28 Thread Vikram Mulukutla
From: Srivatsa Vaddagiri This patch implements an alternative window-based CPU utilization tracking mechanism in the scheduler. Per task and per CPU counters are updated with utilization statistics using a synchronized (across CPUs) time source and a single statistic (prev_runnable_sum) is fed to