| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-04-27 | |||
| 15:39:29 | TheJulia | who is making a room? | |
| 15:39:42 | leakypipes | TheJulia, jgwentworth: https://hangouts.google.com/call/v-fWz1j1qrJCQ4mjKR-cAAEE | |
| 15:43:15 | openstackgerrit | Lance Bragstad proposed openstack/nova master: Simplify logic in get_enforcer https://review.openstack.org/531008 | |
| 15:54:42 | openstackgerrit | Lance Bragstad proposed openstack/nova master: Deprecate rule:context_is_admin https://review.openstack.org/564349 | |
| 16:01:57 | mriedem | finucannot: off the top of your head, | |
| 16:02:31 | mriedem | does hw:cpu_policy=shared just mean vcpus can float across pcpus in any number? like, do we have a way to say that the vcpus must be evenly distributed? | |
| 16:03:00 | finucannot | what do you mean, in any number? | |
| 16:03:13 | mriedem | i think i might be looking for | |
| 16:03:14 | mriedem | FLAVOR-CORES: (comma-separated list of integers) A list of instance vCPUs to map to instance NUMA node N. If not specified, vCPUs are evenly divided among available NUMA nodes. | |
| 16:03:17 | mriedem | from https://docs.openstack.org/nova/latest/user/flavors.html | |
| 16:03:51 | finucannot | Unless you're specifying guest NUMA topologies, I don't think that's what you're looking for | |
| 16:04:01 | finucannot | *requesting | |
| 16:04:27 | mriedem | Kevin_Zheng: around? | |
| 16:04:35 | finucannot | That lets you say "I want 2 cores to go to _guest_ NUMA node 0 and 6 cores to _guest_ NUMA node 1" | |
| 16:04:56 | finucannot | (as an example) | |
| 16:05:03 | Kevin_Zheng | Yeah | |
| 16:05:09 | mriedem | i was thinking if i have a flavor with 8 vcpu and i want those divided evently across numa node 0 and 1 | |
| 16:05:16 | mriedem | *evenly | |
| 16:05:38 | finucannot | mriedem: hw:numa_nodes=2 | |
| 16:05:51 | finucannot | nova won't split guest NUMA nodes across host NUMA nodes | |
| 16:06:23 | finucannot | (nor will it allow two guest NUMA nodes be placed on the same host NUMA node. I think that's a mistake, but that's neither here nor there) | |
| 16:06:45 | sean-k-mooney | finucannot: that is a limitation of the libvirt dirver | |
| 16:07:26 | finucannot | sean-k-mooney: What is? Splitting guest NUMA nodes or placing two guest NUMA nodes on the same host node? | |
| 16:07:41 | sean-k-mooney | finucannot: the api allowas multiple guest numa nodes to be on the same host numa node but the recent placement discustion regarding resource groups changes that | |
| 16:07:50 | Kevin_Zheng | If I specify numa-nodes=2 and cpu_policy=strict do I got some CPI | |
| 16:08:07 | sean-k-mooney | finucannot: having a guest numa node span host numa nodes would violate that api | |
| 16:08:24 | Kevin_Zheng | Some vcpu on host numa0 and others in host numa1? | |
| 16:08:28 | sean-k-mooney | finucannot: having two guest numanodes mapped to a single host numa node would not | |
| 16:08:35 | finucannot | sean-k-mooney: to what API do you refer? | |
| 16:08:56 | finucannot | Kevin_Zheng: I assume you mean hw:cpu_policy=dedicated | |
| 16:08:57 | sean-k-mooney | the meaning of the flavor extra specs | |
| 16:09:08 | Kevin_Zheng | Ah yes | |
| 16:09:31 | finucannot | In which case, yes, the 1/N guest cores go on each host NUMA node, where N is the number of guest NUMA nodes | |
| 16:09:58 | Kevin_Zheng | OK THANKS that’s what I’m asking | |
| 16:10:07 | sean-k-mooney | finucannot: yes that is the default bevahoir if hw:numa_nodes=n | |
| 16:10:42 | finucannot | sean-k-mooney: Yeah, I'm in agreement with you there. There's no reason we shouldn't be able to squash 2 or more guest NUMA nodes on the same host NUMA node | |
| 16:11:06 | finucannot | So long as we don't split a guest NUMA node across two or more host nodes | |
| 16:11:24 | Kevin_Zheng | one more thing, it is available in mitaka? Correct? | |
| 16:11:28 | finucannot | sean-k-mooney: bauzas, fried_rice, sahid and I discussed that a while back | |
| 16:11:35 | mriedem | Kevin_Zheng: yes hw:cpu_policy is in mitaka | |
| 16:11:38 | sean-k-mooney | finucannot: the current behavior was due to a bug in the icehose implementation where we acidetally use the virtual numa node id as the host numa node it was mapped too | |
| 16:11:41 | mriedem | Kevin_Zheng: using NUMATopologyFilter | |
| 16:11:51 | finucannot | Kevin_Zheng: cpu_policy is. cpu_thread_policy is not, iirc | |
| 16:12:05 | mriedem | that is also | |
| 16:12:28 | finucannot | Oh, wow, I've been hanging around here longer than I thought | |
| 16:12:38 | sahid | finucannot: i explained to you the reason why we should not | |
| 16:12:51 | mriedem | finucannot: i think a lot of this stuff has been around since juno | |
| 16:12:58 | mriedem | juno was the big nfv push | |
| 16:13:26 | sean-k-mooney | finucannot: cpu_policy is dedicate/shared cpu_thread_policy is isolate/perfer... neither have anything to do with numa | |
| 16:13:31 | mriedem | https://review.openstack.org/#/c/140408/ kilo | |
| 16:13:46 | finucannot | sahid: IIRC, we agreed to park the discussion because we'd reached an impasse :) | |
| 16:14:11 | sean-k-mooney | mriedem: yes the inital patches were for icehouse but it landed in juno after we set up the intel nfv ci to test it | |
| 16:14:35 | sahid | we were not in a impasse, the only way for an user to ensure that he can pin it's application on two differents cpu is to use guest numa topology | |
| 16:15:01 | openstackgerrit | Merged openstack/nova master: Remove explicit instance.info_cache.delete() https://review.openstack.org/563689 | |
| 16:15:17 | finucannot | mriedem: Aye, and https://review.openstack.org/#/c/202655/ is Mitaka | |
| 16:15:20 | mriedem | https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/virt-driver-cpu-thread-pinning.html | |
| 16:15:21 | mriedem | yeah | |
| 16:16:25 | finucannot | sahid: Two different physical CPUs? | |
| 16:16:28 | sean-k-mooney | mriedem: there were patch before either of those specs for icehose and juno | |
| 16:17:48 | finucannot | sahid: Even then, I still don't see why you'd care about that. The only reason to place them on separate nodes is because there are resources (PCI, GPU, vSwitches) associated with those nodes that we want some affinity to | |
| 16:18:52 | sean-k-mooney | sahid: you can use cpu_policy=dedicated + cpu_thread_policy=isolate to gurarteee that | |
| 16:18:53 | sahid | finucannot: no only, some use cases like realtime or zero drop packets want to have best effort vcpu running on different numa nodes | |
| 16:19:50 | sahid | sean-k-mooney: what you say does not exactly what i mean | |
| 16:20:00 | sahid | you can be on the same socket | |
| 16:20:19 | sean-k-mooney | you stated you wanted different cpus. not different sockets | |
| 16:20:32 | sean-k-mooney | and 2 numa nodes will not guartee different sockets | |
| 16:20:49 | leakypipes | jroll, TheJulia: k, reviewed. | |
| 16:21:07 | jroll | thanks leakypipes | |
| 16:21:21 | finucannot | sean-k-mooney: I assume you're referring to Cluster on Die? | |
| 16:21:27 | sean-k-mooney | finucannot: yep | |
| 16:22:58 | sean-k-mooney | finucannot: we covered this in quete a lot of detail in leakypipes cpu spec actully. | |
| 16:23:29 | sean-k-mooney | finucannot: also here https://etherpad.openstack.org/p/cpu-resource-accounting | |
| 16:24:24 | finucannot | sahid: I'm not sure what using cores from a different NUMA socket would get us that can't be achieved by disabling SMT/HyperThreading | |
| 16:25:06 | sean-k-mooney | finucannot: well isolates has the same effect as disabling HT | |
| 16:25:17 | finucannot | If we do that, the only resources the cores will be sharing is cache and a couple of buses | |
| 16:25:43 | sean-k-mooney | finucannot: when you say cache you mean l3 cache | |
| 16:26:05 | finucannot | and unless you're planning on dedicating every core on the NUMA node to the guest, you're still at risk of other guests on that node screwing with said cache | |
| 16:26:12 | finucannot | sean-k-mooney: yes on both counts | |
| 16:26:59 | sean-k-mooney | l1 cache is per HT l2 cache is shared between HT on same physical core and l3 cache is shared across socket(with cluster on die ist across socket but 1 regoin per numa node) | |
| 16:27:30 | sean-k-mooney | * /across socket/within socket/ | |
| 16:28:03 | finucannot | Yup, that was my understanding of things too | |
| 16:28:46 | finucannot | lstopo is a nifty tool to that end | |
| 16:28:56 | finucannot | Aaaaaanyway, it's Friday evening and thisaguy is going to watch Thanos get his ass kicked (hopefully) | |
| 16:30:31 | openstack | bugzilla.redhat.com bug 1468217 in kernel-rt "KVM: paravirt raw_spinlock priority bump for housekeeping vcpus" [Unspecified,Closed: wontfix] - Assigned to mtosatti | |
| 16:30:31 | sahid | that is one example: https://bugzilla.redhat.com/show_bug.cgi?id=1468217, it's really easy to increase latency on realtime application. my thinking is we should not fake guest numa topology, our current behavior is good and we should keep it. | |
| 16:31:19 | sahid | but probably suer have workaround by using some other isolation so, i'm not going to argue more of that :) | |
| 16:35:06 | sean-k-mooney | sahid: our current behavior is ok but suboptimal in several cases. the main one being multi numa node guest do not create multi numa pcie root trees meaning we can effectly force cross numa traffic event though we have cores of the guess on the same numa node pci device. | |
| 16:35:41 | sahid | sean-k-mooney: what about to have an option? | |
| 16:38:18 | sahid | i'm just scary about to break some specific use cases | |
| 16:38:29 | sahid | if we try to be simple, why user would ask for 2 nodes? | |
| 16:38:40 | sahid | they can just ask for 1 | |
| 16:38:51 | sean-k-mooney | sahid: the user does not the admin does | |
| 16:39:13 | sahid | yeah... it's the user who is going to select the flavor, no? | |
| 16:39:18 | sean-k-mooney | one reason was to allow guest with hugepages to have more cores then fit on a single socket | |
| 16:40:28 | sahid | sean-k-mooney: you do not reply for what they could ask for 2 | |
| 16:40:38 | sahid | s/wht/why | |
| 16:41:10 | sean-k-mooney | that was an example of why they would ask for 2 numa nodes | |
| 16:41:37 | sean-k-mooney | if you ask for one numa nodes with 16 cpus and your only have 10 cpus per numa node that vm cannont boot | |
| 16:42:22 | sean-k-mooney | so when operators want to allow vms with more cores tehn will fit in one host numa node the set hw:numa_nodes=2+ | |
| 16:44:52 | sahid | sean-k-mooney: no no... guest can have 16 vCPUs, 1 numa node - the vCPUs are going to be pinned on different host numa node | |