| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-03-04 | |||
| 16:02:27 | gibi | bauzas: fixing the PCI filter would be a really big work as the filters doesn't know about allocation candidates | |
| 16:02:38 | sean-k-mooney | gibi: cool that was my perference but i could live with it if it was just a fallback for if we could not auto detect it. | |
| 16:02:51 | bauzas | gibi: sure, I'm just saying we haven't this in the spec, right? | |
| 16:02:57 | gibi | sean-k-mooney: libvirt autodetection was pretty small change so I went for it | |
| 16:03:20 | gibi | bauzas: yeah, devil is in the details so this edge case surfaced during implementation | |
| 16:03:27 | gibi | bauzas: I'm planning to retrofit the spec | |
| 16:03:48 | bauzas | gibi: okay, my point is that I want to make sure people are okay with this | |
| 16:04:03 | gibi | bauzas: sure, I also want to make sure, hence the big commit message | |
| 16:04:15 | bauzas | (fwiw, I have the same problem with any NUMA affinity for vGPUs ;) ) | |
| 16:04:26 | bauzas | changing the filter is difficult | |
| 16:04:58 | gibi | if we end up fearing the re-schedule then I can drop this patch and document the limitation | |
| 16:05:33 | bauzas | gibi: I'm not really bad with this | |
| 16:05:54 | bauzas | also, https://review.openstack.org/#/c/636360/19 is the API microversion that really creates the new feature, right? | |
| 16:06:18 | gibi | bauzas: yes, everything is rejected until https://review.openstack.org/#/c/636360/19 | |
| 16:06:37 | gibi | bauzas: everything involving ports with resource request | |
| 16:06:45 | bauzas | yeah, I'm seeing with https://review.openstack.org/#/c/636360/19/nova/api/openstack/common.py | |
| 16:06:45 | gibi | bauzas: except server delete | |
| 16:07:06 | gibi | bauzas: yepp, that is the key | |
| 16:15:17 | stephenfin | gibi: Left a series of nits plus a suggestion to s/pf_interface_name/parent_ifname/, but otherwise +2 on https://review.openstack.org/#/c/623543/ Thanks for tackling that | |
| 16:16:21 | bauzas | gibi: just to make it clear, if you solve https://review.openstack.org/#/c/623543/39//COMMIT_MSG by the compute claim, that means that you check the compute version for all the move ops ? | |
| 16:17:05 | gibi | stephenfin: I'm OK to rename the key to parent_ifname | |
| 16:17:20 | stephenfin | and I'm OK to re-review if you do :) | |
| 16:17:25 | bauzas | don't see any of this in https://specs.openstack.org/openstack/nova-specs/specs/stein/approved/bandwidth-resource-provider.html#upgrade-impact | |
| 16:17:50 | gibi | bauzas: I think you found a problem | |
| 16:18:18 | gibi | bauzas: we did not planned to check the compute version | |
| 16:19:08 | gibi | bauzas: right now if you boot a server and the scheduler select a host that is still Rocky then the pci claim fails as the new pf_interface_name key will be missing from the pci spec | |
| 16:19:25 | gibi | bauzas: so no resource inconsistency but more re-schedule will happen | |
| 16:20:41 | bauzas | gibi: wait | |
| 16:20:42 | gibi | bauzas: ohh no. the InstancePCIRequest will not request the new key either if the request lands on an old compute | |
| 16:20:58 | bauzas | gibi: yeah that | |
| 16:21:08 | bauzas | it's old code so it doesn't know about anything | |
| 16:21:31 | gibi | bauzas: yeah, the InstancePCIRequest change is also in the compute/manager | |
| 16:22:40 | gibi | BUT if we have an old compute then the old compute will not have bandwidth inventory | |
| 16:22:49 | gibi | so placement will not select it | |
| 16:23:07 | gibi | (assuming that nova-compute is updated along with the neutron agents) | |
| 16:23:10 | bauzas | gibi: that was the original reason why we didn't need a check | |
| 16:23:22 | bauzas | because placement checks it for free | |
| 16:23:23 | bauzas | but | |
| 16:23:49 | bauzas | for a classic move operation, you can end up with the late-check not being read | |
| 16:24:03 | mriedem | there is no move support for this in stein | |
| 16:24:30 | gibi | bauzas: ^^ | |
| 16:24:35 | mriedem | gibi: and we enforce that in the api right? | |
| 16:24:39 | mriedem | yeah i remember | |
| 16:24:47 | gibi | mriedem: yes, the moves are rejected | |
| 16:24:56 | gibi | mriedem: even after the 2.72 | |
| 16:24:56 | bauzas | mriedem: what happens with my instance ? am I able to migrate it with dropping the bandwidth check, or do i get some ERROR ? | |
| 16:25:07 | mriedem | you get a 400 or 409 | |
| 16:25:08 | bauzas | ah, that's an API enforcement | |
| 16:25:09 | mriedem | i can't remember which | |
| 16:25:10 | bauzas | good then | |
| 16:25:46 | mriedem | https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/evacuate.py#L123 400 | |
| 16:25:54 | bauzas | so that works, at least if neutron agent is upgraded with compute service, which is usually what's done | |
| 16:26:13 | mriedem | if the neutron agent is upgraded before nova-compute it could be reporting inventory before the compute is ready to handle those types of allocations... | |
| 16:26:18 | mriedem | but i'm not sure how realistic that is | |
| 16:26:41 | gibi | bauzas: even if they ugrade the neutron agent they can skip the bw config in the agent until nova-compute is upgraded | |
| 16:26:45 | bauzas | worth a note at least | |
| 16:26:54 | gibi | bauzas: the whole neutron bw inventory is config based | |
| 16:26:57 | bauzas | yeah | |
| 16:27:12 | mriedem | how much of the compute-level stuff is virt-driver specific? | |
| 16:27:16 | bauzas | so, ops can upgrade whenever they want, and once they're done, they set configs | |
| 16:27:17 | mriedem | just the multi-VF on same PF thing? | |
| 16:27:37 | bauzas | gibi: planned to write some ops docs btw. ? | |
| 16:27:51 | bauzas | that would also help me reviewing all of this :) | |
| 16:27:55 | gibi | bauzas: yeah, rubasov already started it for neutron and I will chime in | |
| 16:28:19 | bauzas | I'd be more than happy to review it | |
| 16:28:23 | gibi | mriedem: good question, I think the SRIOV + bandwidth support is now become virt driver specify | |
| 16:28:41 | gibi | bauzas: here is a neutron WIP doc patch https://review.openstack.org/#/c/640390/ | |
| 16:28:45 | dansmith | mriedem: hmm, aren't the two things in runway slot 2 and 3 part of the same effort? | |
| 16:28:59 | mriedem | dansmith: yeah, spot instances | |
| 16:29:02 | dansmith | yeah | |
| 16:29:04 | mriedem | separate blueprints for whatever reason | |
| 16:29:10 | dansmith | hrm | |
| 16:29:37 | dansmith | they're part of the same stack in gerrit, so.. kinda seems like that's one thing:) | |
| 16:29:42 | gibi | mriedem: if there is a InstancePCIRequest then it will have the new tag included even if the compute host only has a single PF | |
| 16:29:48 | mriedem | gibi: but maybe a compute without a supporting virt driver wouldn't configure the neutron agent to report that inventory | |
| 16:29:52 | artom | mriedem, I wasn't checking the database instance_numa_topology | |
| 16:29:58 | artom | So the pins are updated and correct | |
| 16:30:14 | gibi | mriedem: SRIOV without bw is kept intact | |
| 16:30:15 | artom | But Windriver are telling me the DB isn't updated, despite apply_migration_context() being called | |
| 16:30:43 | gibi | mriedem: so if no resource request in the sriov port then we don't need the special key from the virt driver | |
| 16:30:57 | mriedem | artom: are you saving the instance changes after calling apply_migration_context()? | |
| 16:31:04 | mriedem | b/c ^ doesn't persist the changes, it just updates the object fields | |
| 16:31:15 | artom | mriedem, wait, seriously? | |
| 16:31:35 | artom | mriedem, huh, but instance.save() is still called after in post_live_migration | |
| 16:31:36 | mriedem | don't take my word for it | |
| 16:31:43 | bauzas | gibi: if that's virt-specific, you should document it in https://docs.openstack.org/nova/latest/user/feature-classification.html | |
| 16:31:53 | gibi | bauzas: thanks for the pointer | |
| 16:32:16 | artom | mriedem, ah, you're right, it's not saved | |
| 16:32:21 | mriedem | i'm more worried that we send a server create request to a compute that doesn't support it | |
| 16:32:33 | mriedem | and we don't have any kind of feature capability for this port requested resources stuff | |
| 16:32:44 | mriedem | gibi: bauzas: ^ | |
| 16:32:48 | mriedem | and we just drop the request on the floor | |
| 16:33:01 | dansmith | artom: so does that mean some testing gap exists because we never re-migrate the instance a second time or something? | |
| 16:33:09 | mriedem | thinking about https://review.openstack.org/#/c/538498/ coincidentally | |
| 16:33:11 | bauzas | mriedem: that's my -1 | |
| 16:33:18 | dansmith | artom: meaning.. how could we be failing to save that and think that this works? | |
| 16:33:22 | artom | But there's an instance.save 5 lines after https://review.openstack.org/#/c/634606/37/nova/compute/manager.py@6925 | |
| 16:33:23 | gibi | mriedem: yeah if neutron agent is configured to report bandwidth but the nova virt driver does not support it then it will be NoValidHost after a bunch of reschedule | |
| 16:33:35 | bauzas | mriedem: but the question is : should we leave it as docs, or enforce it ? | |
| 16:33:37 | artom | dansmith, I was just testing the XML is updated correctly | |