Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-03 Thread Namhyung Kim
On Thu, Dec 3, 2020 at 9:20 PM Peter Zijlstra wrote: > > On Wed, Dec 02, 2020 at 11:28:28AM -0800, Andi Kleen wrote: > > > + prev_cgrp = task_css_check(prev, perf_event_cgrp_id, 1)->cgroup; > > > + next_cgrp = task_css_check(next, perf_event_cgrp_id, 1)->cgroup; > > > + > > > + if (prev_cgrp

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-03 Thread Namhyung Kim
On Thu, Dec 3, 2020 at 4:45 PM Peter Zijlstra wrote: > > On Thu, Dec 03, 2020 at 11:10:30AM +0900, Namhyung Kim wrote: > > On Thu, Dec 3, 2020 at 1:19 AM Peter Zijlstra wrote: > > > > > diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h > > > index 9a38f579bc76..5eb284819ee5 100

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-03 Thread Peter Zijlstra
On Wed, Dec 02, 2020 at 11:28:28AM -0800, Andi Kleen wrote: > > + prev_cgrp = task_css_check(prev, perf_event_cgrp_id, 1)->cgroup; > > + next_cgrp = task_css_check(next, perf_event_cgrp_id, 1)->cgroup; > > + > > + if (prev_cgrp != next_cgrp) > > + perf_sw_event_sched(PERF_COUNT_SW_C

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Peter Zijlstra
On Thu, Dec 03, 2020 at 11:10:30AM +0900, Namhyung Kim wrote: > On Thu, Dec 3, 2020 at 1:19 AM Peter Zijlstra wrote: > > > diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h > > index 9a38f579bc76..5eb284819ee5 100644 > > --- a/include/linux/perf_event.h > > +++ b/include/linux/

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Namhyung Kim
On Thu, Dec 3, 2020 at 1:19 AM Peter Zijlstra wrote: > diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h > index 9a38f579bc76..5eb284819ee5 100644 > --- a/include/linux/perf_event.h > +++ b/include/linux/perf_event.h > @@ -1174,25 +1174,19 @@ DECLARE_PER_CPU(struct pt_regs, __p

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Namhyung Kim
Hi Stephane and Andi, On Thu, Dec 3, 2020 at 8:40 AM Stephane Eranian wrote: > > On Wed, Dec 2, 2020 at 2:42 PM Andi Kleen wrote: > > > > On Wed, Dec 02, 2020 at 11:47:25AM -0800, Stephane Eranian wrote: > > > On Wed, Dec 2, 2020 at 11:28 AM Andi Kleen wrote: > > > > > > > > > + prev_cgrp =

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Namhyung Kim
Hi Peter, On Thu, Dec 3, 2020 at 1:19 AM Peter Zijlstra wrote: > > On Thu, Dec 03, 2020 at 12:02:04AM +0900, Namhyung Kim wrote: > > > +#ifdef CONFIG_CGROUP_PERF > > +static inline void > > +perf_sw_event_cgroup_switch(struct task_struct *prev, struct task_struct > > *next) > > +{ > > + stru

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Stephane Eranian
On Wed, Dec 2, 2020 at 2:42 PM Andi Kleen wrote: > > On Wed, Dec 02, 2020 at 11:47:25AM -0800, Stephane Eranian wrote: > > On Wed, Dec 2, 2020 at 11:28 AM Andi Kleen wrote: > > > > > > > + prev_cgrp = task_css_check(prev, perf_event_cgrp_id, 1)->cgroup; > > > > + next_cgrp = task_css_chec

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Andi Kleen
On Wed, Dec 02, 2020 at 11:47:25AM -0800, Stephane Eranian wrote: > On Wed, Dec 2, 2020 at 11:28 AM Andi Kleen wrote: > > > > > + prev_cgrp = task_css_check(prev, perf_event_cgrp_id, 1)->cgroup; > > > + next_cgrp = task_css_check(next, perf_event_cgrp_id, 1)->cgroup; > > > + > > > + if

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Stephane Eranian
On Wed, Dec 2, 2020 at 11:28 AM Andi Kleen wrote: > > > + prev_cgrp = task_css_check(prev, perf_event_cgrp_id, 1)->cgroup; > > + next_cgrp = task_css_check(next, perf_event_cgrp_id, 1)->cgroup; > > + > > + if (prev_cgrp != next_cgrp) > > + perf_sw_event_sched(PERF_COUNT_SW_

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Andi Kleen
> + prev_cgrp = task_css_check(prev, perf_event_cgrp_id, 1)->cgroup; > + next_cgrp = task_css_check(next, perf_event_cgrp_id, 1)->cgroup; > + > + if (prev_cgrp != next_cgrp) > + perf_sw_event_sched(PERF_COUNT_SW_CGROUP_SWITCHES, 1, 0); Seems to be the perf cgroup only, not

Re: [RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Peter Zijlstra
On Thu, Dec 03, 2020 at 12:02:04AM +0900, Namhyung Kim wrote: > +#ifdef CONFIG_CGROUP_PERF > +static inline void > +perf_sw_event_cgroup_switch(struct task_struct *prev, struct task_struct > *next) > +{ > + struct cgroup *prev_cgrp, *next_cgrp; > + > + rcu_read_lock(); > + > + prev_cg

[RFC 1/2] perf core: Add PERF_COUNT_SW_CGROUP_SWITCHES event

2020-12-02 Thread Namhyung Kim
This patch adds a new software event to count context switches involving cgroup switches. So it's counted only if cgroups of previous and next tasks are different. One can argue that we can do this by using existing sched_switch event with eBPF. But some systems might not have eBPF for some reas