[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


 


Rackspace

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