Messages in this thread Patch in this message | | | Date | Mon, 27 Jun 2016 18:21:11 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 4/5] sched/debug: remove several CONFIG_SCHEDSTATS guards |
| |
On Fri, Jun 17, 2016 at 12:43:26PM -0500, Josh Poimboeuf wrote: > index 017a4f5..0aee5dd 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -1626,10 +1626,15 @@ static inline int __set_cpus_allowed_ptr(struct task_struct *p, > static void > ttwu_stat(struct task_struct *p, int cpu, int wake_flags) > { > -#ifdef CONFIG_SCHEDSTATS > - struct rq *rq = this_rq(); > + struct rq *rq; > + > + if (!schedstat_enabled()) > + return; > + > + rq = this_rq(); > > #ifdef CONFIG_SMP > +{ > int this_cpu = smp_processor_id(); > > if (cpu == this_cpu) { > @@ -1651,7 +1656,7 @@ ttwu_stat(struct task_struct *p, int cpu, int wake_flags) > > if (wake_flags & WF_MIGRATED) > schedstat_inc(p->se.statistics.nr_wakeups_migrate); > - > +} > #endif /* CONFIG_SMP */ > > schedstat_inc(rq->ttwu_count);
I did:
--- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1636,10 +1636,7 @@ ttwu_stat(struct task_struct *p, int cpu rq = this_rq(); #ifdef CONFIG_SMP -{ - int this_cpu = smp_processor_id(); - - if (cpu == this_cpu) { + if (cpu == rq->cpu) { schedstat_inc(rq->ttwu_local); schedstat_inc(p->se.statistics.nr_wakeups_local); } else { @@ -1647,7 +1644,7 @@ ttwu_stat(struct task_struct *p, int cpu schedstat_inc(p->se.statistics.nr_wakeups_remote); rcu_read_lock(); - for_each_domain(this_cpu, sd) { + for_each_domain(rq->cpu, sd) { if (cpumask_test_cpu(cpu, sched_domain_span(sd))) { schedstat_inc(sd->ttwu_wake_remote); break; @@ -1658,7 +1655,6 @@ ttwu_stat(struct task_struct *p, int cpu if (wake_flags & WF_MIGRATED) schedstat_inc(p->se.statistics.nr_wakeups_migrate); -} #endif /* CONFIG_SMP */ schedstat_inc(rq->ttwu_count);
| |