Messages in this thread | | | From | bsegall@google ... | Subject | Re: [PATCH v2 2/3] sched/fair: Move hot load_avg into its own cacheline | Date | Thu, 03 Dec 2015 09:56:02 -0800 |
| |
Peter Zijlstra <peterz@infradead.org> writes:
> I made this: > > --- > Subject: sched/fair: Move hot load_avg into its own cacheline > From: Waiman Long <Waiman.Long@hpe.com> > Date: Wed, 2 Dec 2015 13:41:49 -0500 > [...] > @@ -7402,11 +7405,12 @@ void __init sched_init(void) > #endif /* CONFIG_RT_GROUP_SCHED */ > > #ifdef CONFIG_CGROUP_SCHED > + task_group_cache = KMEM_CACHE(task_group, 0); > + > list_add(&root_task_group.list, &task_groups); > INIT_LIST_HEAD(&root_task_group.children); > INIT_LIST_HEAD(&root_task_group.siblings); > autogroup_init(&init_task); > - > #endif /* CONFIG_CGROUP_SCHED */ > > for_each_possible_cpu(i) { > --- a/kernel/sched/sched.h > +++ b/kernel/sched/sched.h > @@ -248,7 +248,12 @@ struct task_group { > unsigned long shares; > > #ifdef CONFIG_SMP > - atomic_long_t load_avg; > + /* > + * load_avg can be heavily contended at clock tick time, so put > + * it in its own cacheline separated from the fields above which > + * will also be accessed at each tick. > + */ > + atomic_long_t load_avg ____cacheline_aligned; > #endif > #endif >
This loses the cacheline-alignment for task_group, is that ok?
| |