Re: [PATCH 15/17] workqueue: remove global_cwq

Tejun Heo
2013-01-23T01:10:05Z

On Tue, Jan 22, 2013 at 03:50:39PM +0900, Joonsoo Kim wrote:
> > -static DEFINE_PER_CPU(struct global_cwq, global_cwq);
> > +static DEFINE_PER_CPU_ALIGNED(struct worker_pool [NR_STD_WORKER_POOLS],
> > + cpu_std_worker_pools);
> > static DEFINE_PER_CPU_SHARED_ALIGNED(atomic_t, pool_nr_running[NR_STD_WORKER_POOLS]);
>
> Why worker_pool is defined as DEFINE_PER_CPU_ALIGNED?
>
> And this makes only worker_pool[0] aligned with cacheline.
> worker_pool[1] is not aligned with cacheline.
> Now, we have a spin_lock for each instance of worker_pool and
> each one is independent instance.
> So, IMHO, it is better to align worker_pool[1] with cacheline.

Right, it's just carried over from the time when there was single pool
implemented as global_gcwq. We probably should define struct
worker_pool as cache aligned.

Thanks.

--
tejun