| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-08-07 | |||
| 15:23:34 | efried | gibi: I guess it's not really relevant until we can tie in whatever piece of hardware is associated with the NUMA node. RP for a NIC PF, kind of thing. Cause today you don't request network VF resources or whatever, right? | |
| 15:24:20 | gibi | efried: right. we don't request VF resource from neutron via the resource request. | |
| 15:25:07 | gibi | efried: you are also correct that when VF will be requested from neturon along with the bandwidth then expressing NUMA affinity will be an issue to be solved | |
| 15:25:59 | efried | gibi: Won't the majority of affinity use cases involve only one NUMA node? | |
| 15:26:18 | sean-k-mooney | we request vf internally in nova currently based on the vif type | |
| 15:26:32 | efried | sean-k-mooney: yes but VF not tracked by placement yet | |
| 15:26:36 | efried | is my point | |
| 15:26:36 | sean-k-mooney | but sriov vf will be owned and created by nova in placmenet in the future | |
| 15:26:39 | sean-k-mooney | not by neutron | |
| 15:26:40 | efried | right | |
| 15:26:47 | efried | oh | |
| 15:26:54 | efried | oh? | |
| 15:27:06 | efried | That will make it tougher | |
| 15:27:12 | sean-k-mooney | yes all pci decice handeling is currently done by nova | |
| 15:27:14 | efried | to affine the bw resources with the vf resources | |
| 15:27:26 | sean-k-mooney | neutron does not have a whitelist of device that can be used | |
| 15:27:28 | efried | what if it was a VIF resource? | |
| 15:28:03 | efried | Anyway, if we had a one-NUMA-node use case, we could handle this fairly well. Even multiple NUMA nodes if they're symmetrical. | |
| 15:28:05 | sean-k-mooney | we discussed adding vif ressource that would be owned by the neutron backend too | |
| 15:28:51 | efried | A case where I want $this specific VF/bw associated with $big_numa and $that specific VF/bw associated with $small_numa that things get really hairy. | |
| 15:29:13 | sean-k-mooney | well nomally its not symetric | |
| 15:29:25 | sean-k-mooney | idealy it would be | |
| 15:29:37 | sean-k-mooney | but its quite common to only have nics attached to numa 0 | |
| 15:29:39 | efried | It's not? I thought that was the point of saying hw:numa_nodes=2 | |
| 15:29:51 | sean-k-mooney | no | |
| 15:29:54 | efried | Sorry, I mean if the CPU/mem resources in the NUMA nodes are symmetric | |
| 15:30:05 | efried | I don't mean "same number of VFs per NUMA node" | |
| 15:30:05 | sean-k-mooney | hw:numa_nodes=2 is refering to the guest numa toplogy | |
| 15:30:19 | sean-k-mooney | oh by default yest | |
| 15:30:22 | sean-k-mooney | *yes | |
| 15:30:28 | efried | when we do that we're dividing evenly, yah? | |
| 15:31:00 | sean-k-mooney | you can change that with hw:numa_mem.0=512 hw:numa_mem.1=1536 | |
| 15:31:02 | huaqiang | sean-k-mooney: hi | |
| 15:31:20 | efried | sean-k-mooney: Yes, exactly, that's my point: those cases are rarer, right? | |
| 15:31:23 | sean-k-mooney | efried: yes if you jsut do hw:numa_nodes it devices cpus and ram evenly | |
| 15:31:36 | sean-k-mooney | we also check its evenly deivisable | |
| 15:31:50 | efried | sean-k-mooney: Do we currently support VF NUMA affinity? | |
| 15:31:56 | sean-k-mooney | efried: yes | |
| 15:32:06 | sean-k-mooney | for 4+ years | |
| 15:32:29 | sean-k-mooney | we require it in the case of neutron sriov which is what im trying to chagne | |
| 15:32:51 | sean-k-mooney | with https://review.opendev.org/#/c/674072/ | |
| 15:33:05 | sean-k-mooney | gibi: ^ i would like your input on that by the way | |
| 15:33:26 | sean-k-mooney | huaqiang: hi | |
| 15:33:42 | efried | sean-k-mooney: even in the case of lopsided NUMA nodes? You can say which one you want your VF associated with? | |
| 15:33:52 | sean-k-mooney | efried: no | |
| 15:33:58 | sean-k-mooney | you cannot specify that at all | |
| 15:34:00 | efried | okay, then we're fine. | |
| 15:34:08 | efried | we continue to say you can't specify that. | |
| 15:34:16 | sean-k-mooney | we guarentee it will come form one of the numa ndoes the vm is mapped too | |
| 15:34:37 | sean-k-mooney | but we give no garuntee it on a specific guest numa node | |
| 15:34:48 | gibi | efried: if nova keeps handling the VFs then nova can do a VF-NUMA affinity. Bandwidth is already tied to VF today in case of SRIOV. | |
| 15:35:02 | sean-k-mooney | currently its always preseneted as if its attache to guest numa node 0 regradelss of what host numa node it came from | |
| 15:35:05 | efried | and we can give the requests for NUMA nodes and VFs generic known suffixes, and use same_subtree to tie them together. | |
| 15:35:16 | efried | perfect | |
| 15:35:20 | sean-k-mooney | i also want to chagne that but not in a way tha will impact placmenet or shcudleing in any way | |
| 15:35:40 | efried | Yeah, let's not give any more granular control over that | |
| 15:35:47 | efried | cause then we would have to support it via placement :) | |
| 15:36:06 | efried | Okay, it's the middle of the night for huaqiang, let's wrap up and yield the floor... | |
| 15:36:17 | sean-k-mooney | efried: what i want to add i the use of a livirt feature that allows mupliple pci roots in the guest | |
| 15:36:34 | huaqiang | sean-k-mooney: got the comments for the 'using PCPU VCPU in one instance', thanks | |
| 15:36:52 | sean-k-mooney | that will allwo us to attach the pci device to the virtual numa node that maps to the host numa node the deive is on | |
| 15:37:16 | huaqiang | but I checked the existing logic for 'hw:cpu_policy=dedicated' and 'hw_cpu_policy=shared', the final policy is 'dedicated' | |
| 15:38:06 | sean-k-mooney | can you show me that in code | |
| 15:38:18 | huaqiang | sure | |
| 15:39:27 | sean-k-mooney | its this https://github.com/openstack/nova/blob/master/nova/virt/hardware.py#L1327-L1338 | |
| 15:39:55 | sean-k-mooney | ok we do perfer the flavor over the image in that case | |
| 15:40:11 | huaqiang | you find it! | |
| 15:40:28 | sean-k-mooney | ya i knew what code shoudl be enforcing it | |
| 15:40:42 | sean-k-mooney | its incositent with how we handel hw:cpu_threads_policy | |
| 15:40:44 | sean-k-mooney | https://github.com/openstack/nova/blob/master/nova/virt/hardware.py#L1370-L1377 | |
| 15:41:09 | sean-k-mooney | and numa topligies https://github.com/openstack/nova/blob/master/nova/virt/hardware.py#L1290 | |
| 15:41:27 | sean-k-mooney | had thought we had made it an error for all conflitc at this point | |
| 15:42:07 | sean-k-mooney | we can chagne that without at least 1 cycle to deprecate the old behavior so i guess we have to stick with the current behavior | |
| 15:42:58 | sean-k-mooney | huaqiang: it would be good to add a warning here https://github.com/openstack/nova/blob/master/nova/virt/hardware.py#L1328 as i dont think that is what people expect | |
| 15:43:12 | huaqiang | so you mean the flavor first behavior | |
| 15:43:17 | sean-k-mooney | yes | |
| 15:43:41 | sean-k-mooney | we started moving to raising exception if they conflict for most of these value a whiel ago | |
| 15:43:55 | sean-k-mooney | at least when adding new values | |
| 15:44:27 | sean-k-mooney | i guess we did not change older values proably due to upgrade concerns | |
| 15:45:23 | huaqiang | so for the new 'mixed' policy, we need consider conflict as invalid | |
| 15:45:53 | huaqiang | but for 'dedicated' and 'shared' conflicts we follow the rule that flavor first | |
| 15:45:54 | sean-k-mooney | well we have a choice | |
| 15:46:31 | sean-k-mooney | my perference would be to consider all conflcit of hw:cpu_policy and hw_cpu_policy to be invalid and raise an exception | |
| 15:46:37 | sean-k-mooney | but since we cant do that htis cycle | |
| 15:46:44 | sean-k-mooney | its better to be consistent i think | |
| 15:47:06 | sean-k-mooney | it would be nice to issue a warning if we detect a conflict however | |
| 15:47:10 | huaqiang | I am good for both | |
| 15:47:37 | huaqiang | ok | |
| 15:48:04 | huaqiang | another thing i don't know if you noticed that | |
| 15:48:19 | huaqiang | hw:cpu_realtime exists | |
| 15:48:37 | huaqiang | but there is no 'hw_cpu_realtime' in image properties | |
| 15:48:59 | huaqiang | this is different with the mask for dedicated cpus | |
| 15:49:41 | huaqiang | Alex mentioned this difference, and cpu realtime mask has a more loose rules | |
| 15:50:23 | sean-k-mooney | yes we did not want to allow users to request realtime guest via the image | |
| 15:50:33 | sean-k-mooney | but we did allow the mask i belive | |
| 15:50:48 | huaqiang | mask is allowed from both image and flavor | |
| 15:51:01 | sean-k-mooney | so you can only enabel realtime cpus via the flavor but both the flavor and image can set the mask | |
| 15:51:15 | huaqiang | that is the truth | |
| 15:52:01 | sean-k-mooney | we have allowed image to enable cpu pinning provided the the flavor has not forbiding it by setting hw:cpu_policy=shared | |
| 15:52:35 | sean-k-mooney | so i think its fine wto allow hw_cpu_policy=mixed give hw_cpu_policy=dedicated is alredy allowed | |