[nova] implementation options for nova spec: show-server-numa-topology
Matt Riedemann
mriedemos at gmail.com
Thu Dec 20 14:47:52 UTC 2018
On 12/18/2018 2:20 AM, yonglihe wrote:
>
> Base on IRC's discuss, we may have 3 options about how to deal with
> those blobs:
>
> 1) include those directly in the server response details, like the
> released POC does:
> https://review.openstack.org/#/c/621476/3
I would think these are potentially admin-level sensitive details as
well and thus only exposed based on a policy check. A user requests a
certain topology, but I'm not sure how low-level the user needs/should
see what nova is doing for satisfying that topology, especially for
things like pinning CPUs on the host. I thought the main use case for
this spec (and several like these discussed at the PTG) was more about
being able to get information (reporting) out of the REST API for
debugging (by admins and/or support team members), less about user need.
>
> 2) add a new sub-resource endpoint to servers, most likely use key word
> 'topology' then:
> "GET /servers/{server_id}/topology" returns the NUMA information for one
> server.
Similar to (1) in that I'd think there would be a new policy check on
this which defaults to admin-only. I think this would be better than (1)
since it wouldnt' be confused with listing servers (GET /servers/detail).
>
> 3) put the NUMA info under existing 'diagnostics' API.
> "GET /servers/{server_id}/diagnostics"
> this is admin only API, normal user loss the possible to check their
> topology.
By default it's an admin-only API, but that is configurable in policy,
so if a given cloud wants to expose this for admin or owner of the
instance, they can do that, or alternatively expose it to support team
members via a special role in keystone.
>
> when the information put into diagnostics, they will be look like:
> {
> ....
> "numa_topology": {
> cells [
> {
> "numa_node" : 3
> "cpu_pinning": {0:5, 1:6},
> "cpu_thread_policy": "prefer",
> "cpuset": [0,1,2,3],
> "siblings": [[0,1],[2,3]],
> "mem": 1024,
> "pagesize": 4096,
> "sockets": 0,
> "cores": 2,
> "threads": 2,
> },
> ...
> ] # cells
> }
> "emulator_threads_policy": "share"
>
> "pci_devices": [
> {
> "address":"00:1a.0",
> "type": "VF",
> "vendor": "8086",
> "product": "1526"
> },
> ]
> }
I tend to prefer option (3) since it seems topology is a much more
natural fit with the existing information (low-level CPU/RAM/disk usage)
we expose out of the diagnostics API and is already restricted to admins
by default in policy (but again as noted this can be configured).
--
Thanks,
Matt
More information about the openstack-discuss
mailing list