| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-09-12 | |||
| 09:09:41 | efried | stephenfin: meanwhile, what's the status of cpu-resources? Ready for a re-look? | |
| 09:10:16 | stephenfin | efried: one patch, yes, but alex_xu has some concerns around the other patch | |
| 09:10:34 | efried | bauzas: are you savvy on the quota issue or do we need to wait for Dan? | |
| 09:10:49 | alex_xu | efried: yes, the only https://review.opendev.org/#/c/671801/, I +2 all other patches | |
| 09:10:59 | stephenfin | efried: In short, the way we're doing the retry is to only retry if placement doesn't provide any matches | |
| 09:11:19 | stephenfin | However, placement could return some matches and the NUMATopologyFilter (or other filters) could reject those | |
| 09:11:49 | efried | ugh | |
| 09:11:50 | stephenfin | So alex_xu is suggesting that we should both the request to placement and the request to the filter scheduler inside the try-try again logic | |
| 09:11:51 | bauzas | efried: well, I'm not a quota specialist, but looks like melwitt's concerns were addressed | |
| 09:11:57 | bauzas | efried: I can take a look on it | |
| 09:12:19 | alex_xu | efried: may help you understand the problem https://etherpad.openstack.org/p/pcpu_fallback | |
| 09:12:33 | efried | stephenfin: or what we could do is just do both GET /a_c queries, cat the vcpu ones after the pcpu ones, and run the filter once. | |
| 09:12:55 | bauzas | we are technically sharding the capacity, right? | |
| 09:13:09 | stephenfin | efried: I thought of that but doesn't the filter scheduler shuffle the allocation candidates? | |
| 09:13:20 | efried | placement does the shuffle | |
| 09:13:24 | stephenfin | ohhhh | |
| 09:13:29 | efried | I don't know if the filter scheduler also does | |
| 09:14:30 | efried | stephenfin: this scenario only applies if PCPUs were requested, right? | |
| 09:14:43 | efried | Meaning if you have the granny switch flipped *and* you're on a flavor that's requesting dedicated? | |
| 09:15:55 | efried | Doing a double GET /a_c would be expensive, so it would be nice if we were only doing it in a corner case. | |
| 09:18:57 | gibi | efried: if there is more than one candidate for a single host then the scheduler will only look for the first candidate (per host) | |
| 09:19:30 | openstackgerrit | Eric Fried proposed openstack/nova master: Support reverting migration / resize with bandwidth https://review.opendev.org/676140 | |
| 09:20:21 | gibi | efried: that will complicate my work a bit ^^ | |
| 09:21:03 | efried | gibi: just a rebase, shouldn't affect anything | |
| 09:21:48 | efried | gibi: only one candidate per host -- yeah, that kills it (<== stephenfin) | |
| 09:23:06 | gibi | efried: I have ongoing work in that series locally, so I have to restach top of the rebase | |
| 09:23:11 | gibi | efried: I will manage | |
| 09:23:14 | efried | oh shit, I'm sorry gibi | |
| 09:23:25 | luyao | sean-k-mooney: Hi Sean, are you around. | |
| 09:23:29 | gibi | efried: no worries, I think I can do some interactive rebase magic | |
| 09:23:40 | efried | gibi: I didn't rebase anything except the first patch | |
| 09:23:57 | efried | so you may just be able to proceed as you were | |
| 09:24:02 | gibi | efried: ack. I will rebase my work on top of that | |
| 09:24:24 | efried | I was just trying to do what little I could to get the gate moving | |
| 09:24:34 | gibi | efried: sure, I understand your motives | |
| 09:24:39 | efried | that patch had already failed py37 on the f'in innodb thing | |
| 09:24:41 | stephenfin | efried, gibi: That shouldn't matter, should it? | |
| 09:25:04 | stephenfin | I mean, if a host is reporting PCPU then by definition we shouldn't try using it for VCPU | |
| 09:25:07 | efried | stephenfin: It makes it a very imperfect solution, but I guess it still narrows the window | |
| 09:25:11 | efried | oh | |
| 09:25:13 | gibi | efried: no worries. I guess I'm overreacted | |
| 09:25:30 | efried | that's a good point stephenfin... I think | |
| 09:25:48 | stephenfin | the crucial thing is does the filter scheduler shuffle hosts? | |
| 09:25:57 | stephenfin | *shuffle allocation candidates | |
| 09:25:58 | gibi | stephenfin: I see. so either there will be more than once candidate but then we are OK with the first. Or there only be candidate with VCPU and then we fallback to that | |
| 09:26:17 | gibi | stephenfin: there is some processing involved let me find a link | |
| 09:26:34 | efried | gibi: actually, I'm not sure if you had hoped to merge more in that series than is already +Wed, but it might be best to wait until after FF to do *anything* else. Esp since gate resources are going to be really scarce for the forseeable future. | |
| 09:27:29 | gibi | efried: Matt and I has hopes for the series. He said he could be able to +2 the rest today. But I accept the bad news if the gate is sad | |
| 09:27:55 | stephenfin | gibi: I think so. Either we'll return a candidate for host from the PCPU query (host has 'cpu_dedicated_set' configured)... | |
| 09:28:02 | stephenfin | or we'll return a candidate for a host from the VCPU query (host has 'vcpu_pin_set' or 'cpu_shared_set' configured or nothing)... | |
| 09:28:22 | gibi | stephenfin: https://github.com/openstack/nova/blob/5fa49cd0b8b6015aa61b4312b2ce1ae780c42c64/nova/scheduler/manager.py#L176 | |
| 09:28:34 | stephenfin | or we'll return the same candidate for both (host has 'cpu_dedicated_set' *and* 'cpu_shared_set') but ignore the one from the VCPU request | |
| 09:28:44 | stephenfin | because the PCPU query was done first | |
| 09:28:44 | gibi | stephenfin: sound OK to me | |
| 09:28:49 | stephenfin | schweet | |
| 09:28:53 | gibi | stephenfin: but look at the link. We bould dicts :/ | |
| 09:29:38 | bauzas | stephenfin: gibi: efried: alex_xu: seriously, I'm still continuing to consider we overthink the problem | |
| 09:29:56 | gibi | stephenfin: hm, that dict is not a problem the allocation requests still in a list | |
| 09:30:06 | efried | gibi: but only per host | |
| 09:30:09 | bauzas | I mean, once the operator opts in, he litterally shards his cloud in twice | |
| 09:30:28 | gibi | efried: but the fallback is needed per host, isn't it? | |
| 09:30:36 | bauzas | if we say the opt-in is per compute, that means the sharding can be long | |
| 09:30:53 | efried | gibi: actually, maybe so. | |
| 09:31:18 | bauzas | that's why the more I see our convos, the best i think it would be to just consider a global option that would dictate all computes sending PCPU inventories | |
| 09:31:24 | gibi | stephenfin: we take the first ar per host https://github.com/openstack/nova/blob/5fa49cd0b8b6015aa61b4312b2ce1ae780c42c64/nova/scheduler/filter_scheduler.py#L238 | |
| 09:31:27 | efried | gibi, stephenfin: as long as it's okay if we try has-only-VCPU candidates before we try a has-PCPU candidate | |
| 09:31:52 | stephenfin | efried: It's not an issue. As noted, the NUMATopologyFilter or virt driver will fail that request | |
| 09:31:56 | efried | ...which should still be fine, because the ntf will remove... yeah | |
| 09:32:38 | efried | so again, stephenfin, under what circumstances are we worried about this? | |
| 09:32:39 | stephenfin | bauzas: We sort of have that - the compute nodes won't send PCPU inventory until 'cpu_dedicated_set' is set | |
| 09:32:58 | bauzas | stephenfin: I know, my opinion is just "doc it, dude" | |
| 09:33:01 | efried | If it's only in the "sharded" case as bauzas says, then I think it may be acceptable to take the double GET /a_c hit. | |
| 09:33:37 | stephenfin | efried: The current solution (where we only try the second 'GET /a_c' if the first doesn't return anything) or the modified one we're suggesting here (where we always make two requests and concat them) ? | |
| 09:33:50 | efried | but if it can happen in a fully-pre or fully-post cloud, we should think it through more carefully. | |
| 09:34:06 | bauzas | adding more complexity into a abstract API that would add special-cases in order to fix a very temporary situation is IMHO like using a big hammer | |
| 09:34:06 | cdent | in train two a_c hits is pretty cheap | |
| 09:34:07 | efried | I'm talking about doing double GET /a_c preemptively. | |
| 09:34:28 | efried | cdent: even for CERN? | |
| 09:34:35 | cdent | yeah | |
| 09:34:49 | cdent | <1 sec per | |
| 09:34:56 | efried | and it's not just the API calls; we'd be doubling the amount of memory we're using to store the candidates | |
| 09:34:56 | stephenfin | oh, then I can't think there are huge issues outside of always making an extra requests to placement | |
| 09:35:07 | stephenfin | which cdent is saying isn't a huge issue | |
| 09:35:08 | efried | I suppose we could cut the ?limit in half... but I don't know if that's a good idea. | |
| 09:35:24 | stephenfin | and only happens if we're using pinning | |
| 09:35:37 | stephenfin | efried: alex_xu had suggested a config option to disable the double lookup | |
| 09:35:47 | efried | that's also a good idea | |
| 09:35:51 | stephenfin | or rather, disable the fallback | |
| 09:35:52 | efried | workaround | |
| 09:35:59 | stephenfin | workaround option, killed in the next release | |
| 09:36:00 | stephenfin | yeah | |
| 09:36:21 | cdent | (the perf issue for a double a_c is the nova-side processing of the results, not the placemnt-side generaiton) | |
| 09:36:25 | stephenfin | just for CERN and other people with huge clouds who might run into this issue | |
| 09:36:50 | efried | so: workaround disabled, you might get nvh when you're out of "real" PCPUs; workaround enabled, you're taking an extra perf/mem hit (small though it may be) any time we... what? | |
| 09:37:04 | efried | ...detect that there are any PCPUs in the cloud? | |
| 09:37:16 | efried | still trying to understand when we would do the double thing | |
| 09:37:36 | stephenfin | anytime you try to create or move a pinned instance | |
| 09:37:57 | efried | mm | |
| 09:38:09 | stephenfin | for one cycle | |
| 09:38:12 | efried | mm | |