Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-19 Thread Alexander Shishkin
Alexey Budankov writes: >>> +static void >>> +perf_event_groups_insert(struct perf_event_groups *groups, >>> + struct perf_event *event) >>> +{ >>> + struct rb_node **node; >>> + struct rb_node *parent; >>> + struct perf_event *node_event; >>> +

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-19 Thread Alexander Shishkin
Alexey Budankov writes: >>> +static void >>> +perf_event_groups_insert(struct perf_event_groups *groups, >>> + struct perf_event *event) >>> +{ >>> + struct rb_node **node; >>> + struct rb_node *parent; >>> + struct perf_event *node_event; >>> + >>> + WARN_ON_ONCE(!groups ||

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-18 Thread Alexey Budankov
Hi, On 18.07.2017 15:29, Alexander Shishkin wrote: > Alexey Budankov writes: > >> +/* >> + * Helper function to test if event groups are empty; >> + */ >> +static int >> +perf_event_groups_empty(struct perf_event_groups *groups) >> +{ >> +return

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-18 Thread Alexey Budankov
Hi, On 18.07.2017 15:29, Alexander Shishkin wrote: > Alexey Budankov writes: > >> +/* >> + * Helper function to test if event groups are empty; >> + */ >> +static int >> +perf_event_groups_empty(struct perf_event_groups *groups) >> +{ >> +return list_empty(>list); >> +} > > This doesn't

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-18 Thread Alexey Budankov
Hi, On 18.07.2017 15:02, Alexander Shishkin wrote: > Alexey Budankov writes: > >> +static void >> +perf_event_groups_rotate(struct perf_event_groups *groups, int cpu) >> +{ >> +struct rb_node *node; >> +struct perf_event *node_event; >> + >> +

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-18 Thread Alexey Budankov
Hi, On 18.07.2017 15:02, Alexander Shishkin wrote: > Alexey Budankov writes: > >> +static void >> +perf_event_groups_rotate(struct perf_event_groups *groups, int cpu) >> +{ >> +struct rb_node *node; >> +struct perf_event *node_event; >> + >> +WARN_ON_ONCE(!groups); > > This seems

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-18 Thread Alexander Shishkin
Alexey Budankov writes: > +/* > + * Helper function to test if event groups are empty; > + */ > +static int > +perf_event_groups_empty(struct perf_event_groups *groups) > +{ > + return list_empty(>list); > +} This doesn't seem useful, it's only used once.

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-18 Thread Alexander Shishkin
Alexey Budankov writes: > +/* > + * Helper function to test if event groups are empty; > + */ > +static int > +perf_event_groups_empty(struct perf_event_groups *groups) > +{ > + return list_empty(>list); > +} This doesn't seem useful, it's only used once. Also, it's not clear how access to

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-18 Thread Alexander Shishkin
Alexey Budankov writes: > +static void > +perf_event_groups_rotate(struct perf_event_groups *groups, int cpu) > +{ > + struct rb_node *node; > + struct perf_event *node_event; > + > + WARN_ON_ONCE(!groups); This seems redundant. > + > +

Re: [PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-18 Thread Alexander Shishkin
Alexey Budankov writes: > +static void > +perf_event_groups_rotate(struct perf_event_groups *groups, int cpu) > +{ > + struct rb_node *node; > + struct perf_event *node_event; > + > + WARN_ON_ONCE(!groups); This seems redundant. > + > + list_rotate_left(>list); > + > + /*

[PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-10 Thread Alexey Budankov
perf/core: use rb trees for pinned/flexible groups By default, the userspace perf tool opens per-cpu task-bound events when sampling, so for N logical events requested by the user, the tool will open N * NR_CPUS events. In the kernel, we mux events with a hrtimer, periodically rotating the

[PATCH v5 1/4]: perf/core: use rb trees for pinned/flexible groups

2017-07-10 Thread Alexey Budankov
perf/core: use rb trees for pinned/flexible groups By default, the userspace perf tool opens per-cpu task-bound events when sampling, so for N logical events requested by the user, the tool will open N * NR_CPUS events. In the kernel, we mux events with a hrtimer, periodically rotating the