| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-09-11 | |||
| 09:10:25 | aspiers | stephenfin: :-o | |
| 09:10:25 | efried | ...as hard/long to complete | |
| 09:10:45 | stephenfin | alex_xu: I've been told we can't. We'll break upgrades. You can't require nova.conf changes simply to upgrade to a new major version | |
| 09:11:04 | aspiers | efried: what are the lessons learnt? other than we should all chip in to help fix CI more :) | |
| 09:11:36 | efried | aspiers: We keep learning the same lessons over and over again but not reacting | |
| 09:11:48 | stephenfin | aspiers: bug people and be as responsive as possible, pretty much | |
| 09:12:13 | alex_xu | stephenfin: emm...I guess because we have no way to force that, the upgrade-check can't check all the hosts' configuration file | |
| 09:12:15 | aspiers | stephenfin: pretty sure I did a lot of bugging - sorry about that ;-) | |
| 09:13:13 | stephenfin | alex_xu: Indeed. Tbh, I don't think it's an issue anyway | |
| 09:13:15 | efried | aspiers: I see the main problems being 1) we commit to too much stuff per release, and 2) we *somehow* need more consistent core engagement throughout the cycle (and it would be nice if less "bugging" was required to achieve that) | |
| 09:13:39 | stephenfin | The NUMATopologyFilter will save us | |
| 09:14:43 | alex_xu | stephenfin: what do you mean "you can't require nova.conf changes simply to ugprade to a new major version"? | |
| 09:14:59 | efried | fwiw my plan for ussuri is to be strict about 1. This was the first release where I had an employer with real business commitments based on the assumption that "approved spec" actually means a thing is expected to get done. (And that's the cycle I had to run for PTL, shoot-self-in-foot) | |
| 09:15:19 | aspiers | efried: yeah. It feels like more resources are required for reviewing in general and the cores are being pulled in too many directions at once | |
| 09:15:32 | efried | ...and therefore the first cycle I really felt the pain of stuff slipping | |
| 09:15:35 | aspiers | ouch | |
| 09:15:50 | stephenfin | alex_xu: I mean if you have Stein-based deployment that's not emitting deprecation warnings, you should be able to upgrade it to Train without changing nova.conf at all and it'll just work | |
| 09:16:08 | aspiers | I can relate - I felt a lot of pressure to land SEV in Train (original plan with AMD was Stein), although it turns out a lot of that pressure was just from me | |
| 09:16:22 | stephenfin | It might start issuing new warnings saying "you will need to do X before you upgrade to U" but that's it | |
| 09:16:27 | kashyap | aspiers: Nice on SEV completion, that's one fo the first things I was looking if it was all merged this morning. | |
| 09:16:34 | stephenfin | efried: Right? ^ | |
| 09:16:44 | aspiers | kashyap: thanks a lot for all your help! | |
| 09:17:34 | efried | stephenfin: that is my understanding, yes | |
| 09:17:40 | stephenfin | Sweet | |
| 09:17:45 | alex_xu | stephenfin: emm...right, we have rule about the configuration file should works with same as before | |
| 09:18:01 | stephenfin | alex_xu: So yeah, tl;dr: we can insist '[compute] cpu_dedicated_set' is configured before U | |
| 09:18:12 | stephenfin | and add an upgrade check to ensure that | |
| 09:18:17 | stephenfin | but not T | |
| 09:18:19 | kashyap | aspiers: NP; glad to be useful. Now I can bug you for Secure Boot stuff -- turning out to be more work than I anticipated :/ | |
| 09:18:27 | stephenfin | because we gave them no warning and no migration path in Stein | |
| 09:18:50 | stephenfin | alex_xu: However, yeah, I don't think this is in an issue. Consider this | |
| 09:19:58 | aspiers | kashyap: bug soon as I'm on vacation next week ;-) | |
| 09:20:01 | stephenfin | Stein-based compute node: reports VCPU, uses NUMATopology.cpuset to determine what cores can be pinned to (with the NUMATopologyFilter simply copying 'cpuset' to 'pcpuset' to keep that passing) | |
| 09:20:16 | kashyap | aspiers: Heh, noted; well-deserved | |
| 09:21:19 | stephenfin | Train-based compute node without new config options: reports VCPU, uses NUMATopology.pcpuset (p!) to determine cores can be pinned to but this == NUMATopology.cpuset (so no need for NUMATopologyFilter to copy 'cpuset' to 'pcpuset') | |
| 09:21:49 | alex_xu | yup | |
| 09:22:04 | stephenfin | Train-base compute node with new config options: reports PCPU, uses NUMATopology.pcpuset (p!) to determine cores can be pinned to and this is unique (again, no need for NUMATopologyFilter to copy 'cpuset' to 'pcpuset') | |
| 09:22:05 | stephenfin | sooo | |
| 09:22:23 | stephenfin | from a placement perspective, things have changed | |
| 09:23:00 | luyao | efried: do you need a unittest for this? https://review.opendev.org/#/c/678450/11/nova/compute/manager.py@2224 | |
| 09:23:10 | stephenfin | but from a NUMATopologyFilter (nova-scheduler) and nova-compute perspective, all three will work perfectly fine together | |
| 09:23:28 | alex_xu | yup, agree | |
| 09:24:01 | efried | luyao: was there a unit test for the exception case before? If so, it should be retained. If not, it wouldn't hurt to add one, but I'm not sure it's necessary. stephenfin, what do you think? | |
| 09:24:38 | luyao | efried: there was one before | |
| 09:24:50 | stephenfin | alex_xu: the _only_ thing that can hurt us is Train-based compute nodes that have no CPU configuration or have new config options but only for shared CPUs ('[compute] cpu_shared_set') | |
| 09:25:06 | efried | luyao: okay, so if it needs to be adjusted based on the code having been moved, do that, but don't remove the unit test. | |
| 09:25:22 | stephenfin | In that case, the second request to placement will return these hosts since they're reporting VCPU. However, they're _really_ reporting VCPU and don't have any PCPU inventory | |
| 09:25:27 | alex_xu | stephenfin: why | |
| 09:25:34 | stephenfin | but, like I said, the NUMATopologyFilter will protect us from that | |
| 09:26:05 | stephenfin | since NUMATopology.pcpuset will be set to None and therefore it will fail to pin | |
| 09:26:27 | luyao | efried: okay | |
| 09:26:56 | alex_xu | stephenfin: ok | |
| 09:26:58 | stephenfin | and obviously if NUMATopologyFilter is disabled for some reason, the instance will fail to schedule when it lands on the host | |
| 09:27:29 | alex_xu | stephenfin: that make senses I think | |
| 09:27:37 | alex_xu | stephenfin: have you see the resize case I wrote at https://review.opendev.org/#/c/681383/2 | |
| 09:27:41 | stephenfin | alex_xu: Phew, glad you understood. It's really hard to put this stuff into words without waffling or going down ratholes :-D | |
| 09:27:42 | stephenfin | Looking | |
| 09:27:53 | alex_xu | stephenfin: hah | |
| 09:28:40 | stephenfin | alex_xu: Could we call that out as a known issue? | |
| 09:29:22 | alex_xu | stephenfin: maybe, I'm thinking whether we request PCPU, and fallback to VCPU, can make that better. | |
| 09:29:30 | alex_xu | but I feel tired, my brain works very slow... | |
| 09:30:14 | stephenfin | Yeah, I guess we'd need to implement the retry logic at a higher level | |
| 09:30:29 | alex_xu | stephenfin: ah, I guess that doesn't work. The problem is placement always can get you same host allocation candidates, but the request is reject by the scheduler filters | |
| 09:31:00 | stephenfin | Yup. So if we wanted to solve that, we'd have to wrap both the call to placement and the call to the scheduler filters | |
| 09:31:15 | stephenfin | and the attempt to schedule to the guest too, in case the user doesn't have NUMATopologyFilter enabled | |
| 09:31:54 | stephenfin | that sounds like a lot of effort for corner case that will only happen while an operator is in the process of upgrading their configuration | |
| 09:33:20 | alex_xu | I feel I just tired | |
| 09:33:20 | stephenfin | alex_xu: If it gets too late for you, I can take over https://review.opendev.org/#/c/681383/ | |
| 09:34:02 | alex_xu | stephenfin: sorry, I need to take a rest little bit. you can free to take over those two patches. I probably online after one or two hours. | |
| 09:34:11 | stephenfin | Sounds good (y) | |
| 09:35:21 | efried | luyao: btw, here's what I did to that provider tree unit test when I was messing around with it locally: http://paste.openstack.org/show/775098/ | |
| 09:35:40 | efried | that last assertTrue fails with copy.copy but succeeds with deepcopy. | |
| 09:38:33 | luyao | efried: get it, thanks. | |
| 09:39:21 | efried | luyao: note that https://review.opendev.org/#/c/678453/26 is in merge conflict (probably aspiers' fault :P ) so you'll need to rebase again. | |
| 09:40:21 | luyao | efried: haha :D | |
| 09:49:43 | luyao | efried: I check the unittests for get_allocations, it tests the function that we move the get_allocations_xx out of | |
| 09:49:53 | luyao | efried: so I have to remove it | |
| 09:50:17 | efried | luyao: then I say just leave that part of the patch as is | |
| 09:50:42 | efried | luyao: stephenfin and I have already reviewed it and accepted it this way, so it's not worth the trouble of changing. | |
| 09:52:26 | luyao | efried: Okay | |
| 09:54:40 | luyao | efried: sorry, confirm again, need try/except or drop? | |
| 09:56:10 | efried | luyao: Sorry, this has gotten confusing. | |
| 09:56:10 | efried | Remove the try/except. I.e. keep this part of the patch as it appears in PS22 https://review.opendev.org/#/c/678450/22/nova/compute/manager.py@2215 | |
| 09:57:04 | luyao | efried: Okay, thanks. | |
| 09:58:56 | efried | luyao: Okay, I've finished re-reviewing the series (except for https://review.opendev.org/#/c/678455/, which I'm still not going to touch) | |
| 09:59:19 | efried | stephenfin: Do you need my re-look at any of the cpu-resources patches at this point? | |
| 09:59:29 | stephenfin | efried: In about a half hour, yeah | |
| 09:59:36 | stephenfin | I think the quota problem is solved | |
| 09:59:53 | efried | sweet | |
| 09:59:56 | stephenfin | So it's just replacing the scheduler conf option with retry logic for placement left | |
| 10:00:02 | stephenfin | almost done with tests | |
| 10:03:35 | efried | luyao: note response on the defaultdict thing -- I still don't think you need it https://review.opendev.org/#/c/678449/21/nova/compute/provider_tree.py@70 | |
| 10:06:58 | luyao | efried: you're right. :) | |
| 10:07:13 | efried | phew. I like being right | |
| 10:08:26 | bauzas | stephenfin: I wonder something | |
| 10:08:54 | bauzas | stephenfin: if we ask for an o.vo field not existing, can we just do something like 'if field not in my_object:' ? | |
| 10:09:07 | bauzas | IIRC, we need to use a specific o.vo method | |
| 10:09:13 | bauzas | unless the field is set to None | |
| 10:09:14 | stephenfin | bauzas: You can do that, yeah | |
| 10:09:17 | stephenfin | For some time now | |