Re: non-NUMA cache_free_alien() (was Re: [RFC] SLAB : NUMA cache_free_alien()very expensive because of virt_to_slab(objp); nodeid = slabp->nodeid;)

From: Eric Dumazet
Date: Thu Mar 22 2007 - 18:57:04 EST


Siddha, Suresh B a écrit :
On Thu, Mar 22, 2007 at 11:12:39PM +0100, Eric Dumazet wrote:
Siddha, Suresh B a écrit :
+ if (num_online_nodes() == 1)
+ use_alien_caches = 0;
+
Unfortunatly this part is wrong.

oops.

You should check num_possible_nodes(), or nr_node_ids (this one is cheaper, its a variable instead of a function call)

But that is based on compile time option, isn't it? Perhaps I need
to use some other mechanism to find out the platform is not NUMA capable..

nr_node_ids is defined to 1 if you compile a non NUMA kernel.

If CONFIG_NUMA is on, then nr_node_ids is a variable, that is filled with the maximum nodeid of possible node (+1). If your machine is not CPU hot plug capable, and you have say one node, (one dual core processor for example), then nr_node_ids will be set to 1
(see mm/page_alloc.c function setup_nr_node_ids() )

So this is OK for your need...

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/