Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Fri, Apr 13, 2018 at 12:47:45PM +0100, Patrick Bellasi wrote: > In the past I remember some funny dance in cgroup callbacks when a > task was terminating (like being moved in the root-rq just before > exiting). But, as you say, if we always have the task_rq_lock we > should be safe. The syscall

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Patrick Bellasi
On 13-Apr 12:47, Patrick Bellasi wrote: > On 13-Apr 13:36, Peter Zijlstra wrote: > > On Fri, Apr 13, 2018 at 12:15:10PM +0100, Patrick Bellasi wrote: > > > On 13-Apr 10:43, Peter Zijlstra wrote: > > > > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > > > > +static inline void u

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Patrick Bellasi
On 13-Apr 13:36, Peter Zijlstra wrote: > On Fri, Apr 13, 2018 at 12:15:10PM +0100, Patrick Bellasi wrote: > > On 13-Apr 10:43, Peter Zijlstra wrote: > > > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > > > +static inline void uclamp_task_update(struct rq *rq, struct > > > > t

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Fri, Apr 13, 2018 at 12:15:10PM +0100, Patrick Bellasi wrote: > On 13-Apr 10:43, Peter Zijlstra wrote: > > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > > +static inline void uclamp_task_update(struct rq *rq, struct task_struct > > > *p) > > > +{ > > > + int cpu = cpu_of(

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Patrick Bellasi
On 13-Apr 13:29, Peter Zijlstra wrote: > On Fri, Apr 13, 2018 at 12:17:53PM +0100, Patrick Bellasi wrote: > > On 13-Apr 10:40, Peter Zijlstra wrote: > > > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > > > +static inline void init_uclamp(void) > > > > > > WTH is that inline?

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Fri, Apr 13, 2018 at 12:17:53PM +0100, Patrick Bellasi wrote: > On 13-Apr 10:40, Peter Zijlstra wrote: > > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > > +static inline void init_uclamp(void) > > > > WTH is that inline? > > You mean I can avoid the attribute? > ... or t

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Fri, Apr 13, 2018 at 12:08:48PM +0100, Patrick Bellasi wrote: > On 13-Apr 11:46, Peter Zijlstra wrote: > > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > > +static inline void uclamp_cpu_get(struct task_struct *p, int cpu, int > > > clamp_id) > > > +{ > > > + struct uclamp

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Patrick Bellasi
On 13-Apr 10:40, Peter Zijlstra wrote: > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > +static inline void init_uclamp(void) > > WTH is that inline? You mean I can avoid the attribute? ... or that I should do it in another way? > > +{ > > + struct uclamp_cpu *uc_cpu; > >

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Fri, Apr 13, 2018 at 12:04:26PM +0100, Patrick Bellasi wrote: > On 13-Apr 12:22, Peter Zijlstra wrote: > > On Fri, Apr 13, 2018 at 10:26:48AM +0200, Peter Zijlstra wrote: > > > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > > > +static inline void uclamp_cpu_get(struct task

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Patrick Bellasi
On 13-Apr 10:43, Peter Zijlstra wrote: > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > +static inline void uclamp_task_update(struct rq *rq, struct task_struct *p) > > +{ > > + int cpu = cpu_of(rq); > > + int clamp_id; > > + > > + /* The idle task does not affect CPU's

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Patrick Bellasi
On 13-Apr 11:46, Peter Zijlstra wrote: > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > +static inline void uclamp_cpu_get(struct task_struct *p, int cpu, int > > clamp_id) > > +{ > > + struct uclamp_cpu *uc_cpu = &cpu_rq(cpu)->uclamp[clamp_id]; > > + int clamp_value; > >

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Patrick Bellasi
On 13-Apr 12:22, Peter Zijlstra wrote: > On Fri, Apr 13, 2018 at 10:26:48AM +0200, Peter Zijlstra wrote: > > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > > +static inline void uclamp_cpu_get(struct task_struct *p, int cpu, int > > > clamp_id) > > > +{ > > > + struct uclamp_

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Fri, Apr 13, 2018 at 10:26:48AM +0200, Peter Zijlstra wrote: > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > +static inline void uclamp_cpu_get(struct task_struct *p, int cpu, int > > clamp_id) > > +{ > > + struct uclamp_cpu *uc_cpu = &cpu_rq(cpu)->uclamp[clamp_id]; >

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > +static inline void uclamp_cpu_get(struct task_struct *p, int cpu, int > clamp_id) > +{ > + struct uclamp_cpu *uc_cpu = &cpu_rq(cpu)->uclamp[clamp_id]; > + int clamp_value; > + int group_id; > + > + /* Get task's sp

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Fri, Apr 13, 2018 at 11:30:05AM +0200, Peter Zijlstra wrote: > On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > > +struct uclamp_group { > > + /* Utilization clamp value for tasks on this clamp group */ > > + int value; > > + /* Number of RUNNABLE tasks on this clamp grou

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > +struct uclamp_group { > + /* Utilization clamp value for tasks on this clamp group */ > + int value; > + /* Number of RUNNABLE tasks on this clamp group */ > + int tasks; > +}; > +struct uclamp_cpu { > + /* Uti

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > +static inline void uclamp_task_update(struct rq *rq, struct task_struct *p) > +{ > + int cpu = cpu_of(rq); > + int clamp_id; > + > + /* The idle task does not affect CPU's clamps */ > + if (unlikely(p->sched_class =

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > +static inline void init_uclamp(void) WTH is that inline? > +{ > + struct uclamp_cpu *uc_cpu; > + int clamp_id; > + int cpu; > + > + mutex_init(&uclamp_mutex); > + > + for (clamp_id = 0; clamp_id < UCLAMP_CNT;

Re: [PATCH 1/7] sched/core: uclamp: add CPU clamp groups accounting

2018-04-13 Thread Peter Zijlstra
On Mon, Apr 09, 2018 at 05:56:09PM +0100, Patrick Bellasi wrote: > +static inline void uclamp_cpu_get(struct task_struct *p, int cpu, int > clamp_id) > +{ > + struct uclamp_cpu *uc_cpu = &cpu_rq(cpu)->uclamp[clamp_id]; > +static inline void uclamp_cpu_put(struct task_struct *p, int cpu, int