[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 0/6] xen,xend,tools: Add NUMA support to Xen



Le Jeudi 03 Août 2006 00:29, Ryan Harper a écrit :
> * Tristan Gingold <Tristan.Gingold@xxxxxxxx> [2006-08-02 00:56]:
> > Le Mardi 01 Août 2006 17:40, Ryan Harper a écrit :
> > > * Tristan Gingold <Tristan.Gingold@xxxxxxxx> [2006-08-01 02:43]:
> > > > Le Lundi 31 Juillet 2006 21:09, Ryan Harper a écrit :
> > > > > I've respun the NUMA patches against 10874 and I'm re-submitting
> > > > > them with the optimizations mentioned [1]previously on the list. 
> > > > > There was a request to see the overhead on non-numa/single-node
> > > > > machines.  I've re-run those benchmarks (ballooning up from small
> > > > > mem to multi-gig) as well as timing the initially domain
> > > > > increase_reservation time to gauge the overhead when allocating
> > > > > from the heap.
> > > >
> > > > Hi,
> > > >
> > > > I am trying to use your patch on ia64.
> > >
> > > Thanks for testing these out on ia64.
> > >
> > > > In asm-x86/topology.h, you wrote:
> > > >
> > > > extern unsigned int cpu_to_node[];
> > > > extern cpumask_t     node_to_cpumask[];
> > > >
> > > > #define cpu_to_node(cpu)                (cpu_to_node[cpu])
> > > > #define parent_node(node)               (node)
> > > > #define node_to_first_cpu(node)  (__ffs(node_to_cpumask[node]))
> > > > #define node_to_cpumask(node)    (node_to_cpumask[node])
> > > >
> > > > I think cpu_to_node and node_to_cpumask must be either a variable or
> > > > a macro, but not both! (ia64 defines cpu_to_node as a macro).
> > >
> > > I'm not sure about this, but the definition of both the variable and
> > > macro come from Linux, for example in
> >
> > [...]
> >
> > > AFAIK, this isn't an issue.
> >
> > Except you are using both versions mainly the macro but at least the
> > variable once in page_alloc.c:
> >
> > /* Allocate 2^@order contiguous pages. */
> > struct page_info *alloc_heap_pages(unsigned int zone, unsigned int cpu,
> >                                    unsigned int order)
> > {
> >     unsigned int i,j, node = cpu_to_node[cpu], num_nodes =
> > num_online_nodes(); unsigned int request = (1UL << order);
> >
> > This was a problem for ia64.
> > Furthermore you define the variable in xen/numa.h:
> > extern unsigned int cpu_to_node[];
> > #include <xen/cpumask.h>
> > extern cpumask_t node_to_cpumask[];
> >
> > Which one is the API ?
>
> If ia64 is already using macros, then we should use the macros.  I
> should be able to remove those externs from numa.h and include the
> asm/topology.h (not in xen/numa.h since that is the same thing)
> in the .c files , like page_alloc.c, and use the macros instead.
>
> Something like this (compiled on x86_64):
[...]
Yes, this would be fine for me.

Thank you for your NUMA work,
Tristan.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.