[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 1/5] sysctl: Make XEN_SYSCTL_numainfo a little more efficient
On 07/04/15 18:28, Boris Ostrovsky wrote: > On 04/07/2015 01:04 PM, Andrew Cooper wrote: >> On 07/04/15 17:57, Boris Ostrovsky wrote: >>> On 04/07/2015 12:04 PM, Andrew Cooper wrote: >>>> On 06/04/15 23:12, Boris Ostrovsky wrote: >>>>> A number of changes to XEN_SYSCTL_numainfo interface: >>>>> >>>>> * Make sysctl NUMA topology query use fewer copies by combining some >>>>> fields into a single structure and copying distances for each >>>>> node >>>>> in a single copy. >>>>> * NULL meminfo and distance handles are a request for maximum number >>>>> of nodes (num_nodes). If those handles are valid and num_nodes is >>>>> is smaller than the number of nodes in the system then >>>>> -ENOBUFS is >>>>> returned (and correct num_nodes is provided) >>>>> * Instead of using max_node_index for passing number of nodes keep >>>>> this >>>>> value in num_nodes: almost all uses of max_node_index required >>>>> adding >>>>> or subtracting one to eventually get to number of nodes anyway. >>>>> * Replace INVALID_NUMAINFO_ID with XEN_INVALID_MEM_SZ and add >>>>> XEN_INVALID_NODE_DIST. >>>>> >>>>> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> >>>>> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> >>>> This subtly changes the behaviour of XEN_SYSCTL_numainfo with >>>> regards to >>>> NULL guest handles. >>>> >>>> Previously, a caller was able to select which information they >>>> wanted by >>>> choosing which guest handles were non-NULL. >>>> >>>> With the new semantics, the caller must pass both ni->meminfo and >>>> ni->distance to get either bit of information. Each >>>> copy_to_guest_offset() should be gated on a !guest_handle_is_null() >>>> so a >>>> caller can request meminfo information without distance information. >>> >>> Currently the caller, in fact, can have either of three pointers >>> (node_to_memsize, node_to_memfree or node_to_node_distance) as NULL >>> and the hypervisor will fill whichever pointer is valid. Because I put >>> the first two together into a struct we are already changing behavior >>> in that regard. Not to mention that having all three as NULL now has >>> new meaning as well. >>> >>> I thought that either both pointers should be valid or neither. If >>> people disagree I can change this. >> I have a usecase (hwloc) which wants meminfo but not distance. In such >> a case, the inner for loop can be skipped which is an advantage for Xen. > > Are you planning on calling sysctls directly from your hwloc > extension? Why not go via libxl which is a stable interface AFAIUI. I did when experimenting. Not sure going forwards, but probably libxl for API reasons. Still, for the sake of two guest_handle_is_null() checks, I think we should keep the ability to choose a subset of the information returned. Consider some statistics daemon wanting to periodically poll for memory usage on certain nodes without wanting the distance matrix each time. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |