Messages in this thread | | | Date | Fri, 16 Jan 2009 09:49:19 +0100 | From | Frederic Weisbecker <> | Subject | Re: [PATCH -tip] trace_workqueue: use percpu data for workqueue stat |
| |
On Fri, Jan 16, 2009 at 04:11:51PM +0800, Lai Jiangshan wrote: > Frédéric Weisbecker wrote: > > Hi Lai, > > > > 2009/1/15 Lai Jiangshan <laijs@cn.fujitsu.com>: > >> Impact: make trace_workqueue works well on NUMA > >> > >> It's not correct when (num_possible_cpus() < nr_cpumask_bits): > >> all_workqueue_stat = kmalloc(sizeof(struct workqueue_global_stats) > >> * num_possible_cpus(), GFP_KERNEL); > > > > > > What is the difference between num_possible_cpus() and nr_cpumask_bits actually? > > It looks like nr_cpumask_bits binds to NR_CPUS on early time and after > > it is set to > > num_possible_cpus() , right? > > In this case num_possible_cpus() seems more relevant...no? > > > > (I'm pretty sure I'm wrong.... :-) > > > > I wanted to reference to nr_cpu_ids, not nr_cpumask_bits(I made mistake yesterday) > > init/main.c > static void __init setup_nr_cpu_ids(void) > { > nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1; > } > setup_nr_cpu_ids() is called directly in main.c, it's earlier than early_initcall. > > So nr_cpu_ids is better than num_possible_cpus(), for maybe cpu_possible_mask=101B > nr_cpu_ids=3, num_possible_cpus()=2, We will access to invalid memory when we use > num_possible_cpus().
Ok. But is it possible to enable a new possible cpu on runtime?
> but percpu data as my patch shows is better than nr_cpu_ids.
Yeah that's right. And more proper.
> Thanks, Lai. > > >
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |