| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2020-02-04 | |||
| 14:58:56 | sean-k-mooney | bauzas: right that just need hw:numa_nodes=1 | |
| 14:59:02 | ralonsoh | stephenfin, the device_id will be there | |
| 14:59:20 | sean-k-mooney | bauzas: i use hugepages on my home system but not pinning | |
| 14:59:36 | stephenfin | efried: 2 sockets w/ a 32 core CPU in each socket (no HyperThreading). Go boot a 33 core instance | |
| 14:59:40 | bauzas | either way, I think we need to move forward | |
| 14:59:45 | sean-k-mooney | bauzas: beacue i want cpu oversubscition but not memory over subscrtion | |
| 15:00:08 | bauzas | I'll write the new revision with a bool flag and mention the alternative of an automatic all-NUMA world in the spec | |
| 15:00:09 | stephenfin | You can't because the instance will no longer split across the NUMA nodes, and we don't let an instance oversubscribe against itself | |
| 15:00:17 | bauzas | people will chime in and we'll see | |
| 15:00:24 | efried | dansmith: --^ | |
| 15:00:39 | dansmith | stephenfin: efried: because what nova currently provides is "no numa means 1 numa" yeah? | |
| 15:00:44 | sean-k-mooney | efried: yes we are aware that is the giant vm case. | |
| 15:00:50 | stephenfin | ralonsoh: It will *always* be there? | |
| 15:00:57 | stephenfin | dansmith: No, no NUMA means no NUMA | |
| 15:00:58 | ralonsoh | stephenfin, yes | |
| 15:00:59 | stephenfin | currently | |
| 15:01:18 | bauzas | dansmith: nova currently provides "I can spread my VM across many NUMA nodes if I don't care' | |
| 15:01:20 | dansmith | stephenfin: how is no numa and 1 numa node different to theguest/ | |
| 15:01:23 | ralonsoh | stephenfin, in the port this key, "device_id", is mandatory | |
| 15:01:33 | sean-k-mooney | dansmith: in the guest it does not | |
| 15:01:35 | dansmith | bauzas: right, we lie and say it's one node when it's not you mean? | |
| 15:01:38 | dansmith | sean-k-mooney: right exactly | |
| 15:01:54 | bauzas | dansmith: while that being broken if you turn into the new modeling | |
| 15:01:59 | sean-k-mooney | dansmith: but if you do hw:numa_nodes=1 we require that he guest virtual numa node be mapped to at most 1 host numa node | |
| 15:02:10 | sean-k-mooney | and that is where it breaks | |
| 15:02:10 | stephenfin | It's not for the guest, but we insist on 1 guest NUMA node being mapped to one host NUMA node | |
| 15:02:11 | bauzas | dansmith: it's a breaking change tbc | |
| 15:02:11 | dansmith | so my point is, for the giant vm case right now, we either require you to ignore or be insulated from the numaness that *does* exist, or configure it in a detailed fashion | |
| 15:02:25 | stephenfin | dansmith: correct | |
| 15:02:41 | bauzas | that's the proposal | |
| 15:02:50 | dansmith | that's all I'm saying.. nobody is opting *into* this behavior, they're choosing it because it's less bad than having to hand configure flavors | |
| 15:03:14 | dansmith | ...for their giant vms | |
| 15:03:19 | stephenfin | don't use anything that would configure NUMA (hw:numa_nodes, hw:cpu_policy=dedicated, hw:mem_page_size=foo) or hand tune for your chosen host topology | |
| 15:03:23 | stephenfin | dansmith: Yup, agreed | |
| 15:03:28 | dansmith | efried: ^ | |
| 15:03:42 | openstackgerrit | Kashyap Chamarthy proposed openstack/nova-specs master: Re-propose "Secure Boot support for KVM & QEMU guests" for Ussuri https://review.opendev.org/693844 | |
| 15:03:47 | bauzas | the ideal would be us being able to serve an instance request *not* asking for NUMA with a NUMA-aware inventory | |
| 15:04:22 | dansmith | right | |
| 15:04:22 | bauzas | because if so, we would just make the switch for *all* hosts | |
| 15:04:28 | dansmith | and | |
| 15:04:38 | dansmith | we'd not be pretending with the topology | |
| 15:04:39 | stephenfin | ralonsoh: Thanks! So I'm going to rework this to check if the port details extension is enabled. If it is, use 'device_id' from that. If it is not, make a second request to '/ports/{port_id}' and extract 'device_id' from that | |
| 15:04:48 | stephenfin | ralonsoh: Does that sound reasonable? | |
| 15:05:00 | efried | Am I understanding that you can't boot a huge VM today either? | |
| 15:05:03 | stephenfin | ralonsoh: And assuming you're not planning to fix this yourself. If you've started, please continue :) | |
| 15:05:05 | bauzas | so, basically, the flag is just an expression of us being unable to serve such query :( | |
| 15:05:17 | sean-k-mooney | efried: you can but only if you use no numa feature | |
| 15:05:17 | bauzas | a technical limitation of our own | |
| 15:05:18 | ralonsoh | stephenfin, no, I didn't start doing it hehehe | |
| 15:05:28 | ralonsoh | stephenfin, but yes, this should be the procedure | |
| 15:05:32 | sean-k-mooney | or you use multiple guset numa nodes | |
| 15:05:34 | stephenfin | efried: You can but only if you don't configure anything with NUMA | |
| 15:05:42 | sean-k-mooney | got to join a call | |
| 15:05:46 | stephenfin | darn, ninja'd by sean-k-mooney | |
| 15:05:49 | efried | Feel like that came all the way back in a circle. | |
| 15:06:42 | stephenfin | efried: the original question was why can't we always report NUMA to placement, yeah? | |
| 15:07:45 | efried | But now we're considering removing that first possibility by forcing all hosts to be NUMA-aware. | |
| 15:07:45 | efried | And the proposal we started the morning with would allow you to do the same. | |
| 15:07:45 | efried | IOW to boot a huge instance today, you can artificially give it a multi-numa topo, or you can say nothing about NUMA. | |
| 15:07:57 | efried | sorry, removing the *second* possibility | |
| 15:08:31 | stephenfin | I don't think it's possible to force all hosts to be NUMA-aware | |
| 15:09:26 | bauzas | that's the crux of the problem | |
| 15:09:51 | efried | But dansmith has been arguing against that. | |
| 15:09:51 | efried | And you could only boot flavors with hw:numa*isms into the former; and you could only boot flavors *without* numa*isms into the latter. | |
| 15:09:51 | efried | stephenfin: I thought we had this all sussed out. I thought we were going to segregate the cloud into NUMA-aware (placement resources split along NUMA RPs) and non-NUMA-aware (what it looks like today, with all proc/mem on the root RP) hosts | |
| 15:09:54 | bauzas | are we able nowadays to express a placement query for a large VM with a NUMA-aware host ? | |
| 15:10:25 | bauzas | given the new proposal you made in the etherpad | |
| 15:10:28 | stephenfin | Agree on the first point | |
| 15:10:30 | dansmith | efried: dude, can you let up a bit? I think multiple people are saying it would be nice to not have this restriction, no? | |
| 15:10:47 | stephenfin | Don't recall agreeing to the latter | |
| 15:10:58 | bauzas | like, "I want 8 VCPUs" can it be satisfied with 4 CPUs on each NUMA node ? | |
| 15:10:59 | dansmith | efried: I'm not demanding anything, I'm just saying I don't think that expecting to need to segregate the fleet forever is the best long term plan | |
| 15:11:32 | efried | It would be nice, but (and again I may be misremembering the discussions) I thought we decided to compromise because that would be too hard to do. | |
| 15:11:38 | bauzas | like, could we assume a specific query attribute to placement unless others are expressed ? | |
| 15:11:45 | efried | bauzas: no, that doesn't work. | |
| 15:11:53 | bauzas | efried: I'm just challenging this idea | |
| 15:12:19 | efried | bauzas: we've been down that road before -- that was the thing where you would have to ask for individual MB of memory in a zillion granular groups with group_policy=none, remember? | |
| 15:12:56 | bauzas | I see | |
| 15:13:02 | efried | We also proposed can_split to help with that, but abandoned the idea for reasons. | |
| 15:13:20 | bauzas | yeah, I was considering can_spit | |
| 15:13:23 | bauzas | split heh | |
| 15:13:43 | efried | But the other reason was that we had decided on the above architecture and designed same_subtree etc. to accommodate it. | |
| 15:13:43 | efried | one reason was that it was going to be really hard to make the syntax work properly | |
| 15:14:07 | bauzas | like, until we somehow have a placement construction that allows us to 'spread a query across multiple RPs', then the option is mandatory :( | |
| 15:14:12 | stephenfin | dansmith: Yeah, no reason this opt-out of NUMA behavior couldn't be phased out over multiple releases | |
| 15:14:25 | dansmith | stephenfin: that's specifically what I'm saying | |
| 15:14:49 | efried | stephenfin: so in order to fit my large VM, I would have to specify multiple NUMA nodes? | |
| 15:15:00 | efried | ...in that future release? | |
| 15:15:05 | stephenfin | efried: Yup | |
| 15:15:26 | stephenfin | Or turn off NUMA on your host | |
| 15:15:39 | stephenfin | It's usually tucked away in the BIOS | |
| 15:15:57 | dansmith | from the user's perspective, | |
| 15:16:00 | efried | okay, I didn't know that was even an option. So the driver would report effectively a single NUMA node in that case | |
| 15:16:06 | stephenfin | correct | |
| 15:16:10 | efried | well shit | |
| 15:16:20 | stephenfin | fwiw, this is the same decision we made with the thread policies | |
| 15:16:49 | dansmith | if we had a hw:numa_hodes_min= thing, then they could express in the flavor whether they *need* two numa nodes, or are willing to *tolerate* multiple nodes, the current thing being the upper limit if both specified, right? | |
| 15:16:53 | bauzas | I need to come to a conclusion because parenting taxi duties | |
| 15:17:08 | dansmith | the fact that we've backed ourselves into a corner with placement and expressivity notwithstanding | |
| 15:17:15 | efried | dansmith: So yeah, I was going to address that. The problem is that we have no way to translate that into placement... yeah. | |