| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-09-27 | |||
| 08:27:08 | kashyap | gibi: I added the FIXMEs there :-) | |
| 08:27:18 | gibi | kashyap: cool :) | |
| 08:27:40 | gibi | kashyap: +2 | |
| 08:28:01 | kashyap | Sweet, thank you! | |
| 08:28:53 | gibi | kashyap: thank you for picking this work up | |
| 08:29:39 | kashyap | gibi: No worries; I did that last cycle, and once or twice before too. Thought I'd "remove the bandage quickly" this time too :-) | |
| 08:41:25 | stephenfin | kashyap: I assume you're going to follow that up with a patch to bump the current minimums? | |
| 08:41:39 | kashyap | stephenfin: Yeah, indeed. | |
| 08:41:56 | kashyap | stephenfin: Want to ACK the above, already got one from gibi | |
| 08:42:22 | stephenfin | I can. Just reading through the notes on the Wiki first | |
| 08:42:25 | kashyap | Sure | |
| 08:42:59 | kashyap | stephenfin: In short: Oracle Linux already has the relevant versions we bumped to and SLES will have it (Colleen confirmed on the review). | |
| 08:43:06 | kashyap | And the rest of the distributions already have it. | |
| 08:43:26 | kashyap | That's the thread on the list: lists.openstack.org/pipermail/openstack-operators/2018-September/015929.html | |
| 08:43:57 | kashyap | Clicakable: http://lists.openstack.org/pipermail/openstack-operators/2018-September/015929.html | |
| 08:53:38 | openstackgerrit | Radoslav Gerganov proposed openstack/nova master: VMware: Live migration of instances https://review.openstack.org/270116 | |
| 09:17:37 | openstackgerrit | Takashi NATSUME proposed openstack/nova master: Add API ref guideline for body text https://review.openstack.org/605628 | |
| 09:34:16 | openstackgerrit | Balazs Gibizer proposed openstack/nova master: Follow up for Ib6f95c22ffd3ea235b60db4da32094d49c2efa2a https://review.openstack.org/604743 | |
| 10:00:36 | openstackgerrit | Chen proposed openstack/nova master: remove commented-out code https://review.openstack.org/605635 | |
| 10:18:03 | openstackgerrit | Brin Zhang proposed openstack/nova master: Specifies the storage backend to boot instance https://review.openstack.org/579360 | |
| 10:35:30 | openstackgerrit | Matthew Booth proposed openstack/nova master: Don't delete disks on shared storage during evacuate https://review.openstack.org/578846 | |
| 10:35:34 | openstackgerrit | tianhui proposed openstack/nova master: Update doc: launch-instance-from-volume https://review.openstack.org/605640 | |
| 11:15:48 | openstackgerrit | Merged openstack/nova master: Pick next minimum libvirt / QEMU versions for "T" release https://review.openstack.org/605060 | |
| 11:27:17 | openstackgerrit | Balazs Gibizer proposed openstack/nova master: Followup for Iba230201803ef3d33bccaaf83eb10453eea43f20 https://review.openstack.org/605653 | |
| 11:57:11 | openstackgerrit | Balazs Gibizer proposed openstack/nova master: Follow up for Iba230201803ef3d33bccaaf83eb10453eea43f20 https://review.openstack.org/605653 | |
| 11:57:12 | openstackgerrit | Balazs Gibizer proposed openstack/nova master: Follow up for Ie991d4b53e9bb5e7ec26da99219178ab7695abf6 https://review.openstack.org/605658 | |
| 12:01:13 | gibi | jaypipes: I've left answer to your question in https://review.openstack.org/#/c/591811/ | |
| 12:13:12 | mdbooth | Hmm, I just discovered that initialisation by defaultdict isn't threadsafe | |
| 12:13:58 | cdent | mdbooth: that statement has an mdbooth number of 7 | |
| 12:14:32 | mdbooth | It means that if you've got: foo = defaultdict(threading.Lock) | |
| 12:14:47 | mdbooth | and 2 threads concurrently do: foo['thing'] | |
| 12:14:57 | mdbooth | They might get different threading.Lock objects | |
| 12:16:54 | cdent | there's some interesting but potentially old discussion at https://stackoverflow.com/questions/17682484/is-collections-defaultdict-thread-safe | |
| 12:17:18 | mdbooth | cdent: Yep, that's where I read it :) | |
| 12:43:06 | openstackgerrit | huanhongda proposed openstack/nova master: Allow to attach/detach port when vm_state is soft-delete https://review.openstack.org/605602 | |
| 12:48:20 | openstackgerrit | Elod Illes proposed openstack/nova master: Reject interface attach with QoS aware port https://review.openstack.org/570078 | |
| 12:50:00 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Null out instance.availability_zone on shelve offload https://review.openstack.org/599087 | |
| 12:50:55 | mriedem | johnthetubaguy: alex_xu: ^ was just a rebase due to a new notification test that needed a sample update | |
| 13:11:08 | gibi | mriedem: is the skip_filters flag of the scheduler you mention in https://github.com/openstack/nova/blob/8c3d02ac3d890f414ce4e05c41d44dca3b385424/nova/conductor/tasks/live_migrate.py#L103-L108 a reality or just a dream? | |
| 13:12:28 | gibi | mriedem: I'm trying to solve the nested force migration issues in https://review.openstack.org/#/c/604084/2/nova/tests/functional/test_servers.py@4897 and I think that skip_filters flag is the solution | |
| 13:17:30 | mriedem | gibi: i'm not working on it if that's what you mean | |
| 13:18:09 | mriedem | but i think the idea is still ok - pass a flag to the scheduler to not run filtered hosts, just do the claim on the forced host | |
| 13:18:32 | mriedem | treats the scheduler more like a library | |
| 13:18:42 | mriedem | the point of that todo was more about DRYing up the code | |
| 13:18:52 | gibi | mriedem: would scheduler still call GET allocation_candidates? | |
| 13:19:25 | mriedem | if it needs those to make the claim, then i guess? but that kind of goes against what forcing a host is all about, | |
| 13:19:38 | mriedem | which is, claims be damned this is where i want the thing to go | |
| 13:19:46 | mriedem | but having said that, | |
| 13:19:58 | mriedem | we already broke that contract with https://github.com/openstack/nova/blob/8c3d02ac3d890f414ce4e05c41d44dca3b385424/nova/conductor/tasks/live_migrate.py#L103-L108 | |
| 13:20:09 | mriedem | because we have to keep allocations straight in placement | |
| 13:20:17 | mriedem | or that's what we said to justify that change at the time | |
| 13:20:40 | mriedem | honestly force with bypassing the scheduler was always a terrible idea | |
| 13:20:47 | gibi | mriedem: when we forcing a host we cannot blindly copy the source allocation to the dest host in case of nested | |
| 13:21:08 | gibi | mriedem: as we only know the dest host rp_uuid but not the nested rps | |
| 13:21:35 | mriedem | so we need a new set of allocation candidates | |
| 13:21:37 | gibi | mriedem: one way to solve that is to call GET a_c but limit the search for the given dest host | |
| 13:21:51 | mriedem | that seems reasonable | |
| 13:21:53 | mriedem | essentially, | |
| 13:22:25 | mriedem | in the case of nested RP allocations + force, we'd just go through the scheduler with the requested host but kind of ignore the force flag | |
| 13:22:50 | mriedem | i.e. you can live migrate today by specifying a specific host w/o forcing it and we'll validate that requested host with the scheduler | |
| 13:22:54 | mriedem | it sounds like you want to do the same | |
| 13:22:58 | mriedem | s/want/need/ | |
| 13:23:25 | gibi | mriedem: that seems to be the way forward. So now I go and dig that code path | |
| 13:23:30 | gibi | mriedem: thanks | |
| 13:24:07 | mriedem | in the case of an unforced live migration to a specific host, we just set the RequestSpec.requested_destination to the requested host/node and send that to the scheduler | |
| 13:24:24 | mriedem | it sounds like you'd just need some logic up-front to determine, is this an instance that has allocations on nested RPs | |
| 13:24:28 | mriedem | and if so, ignore the force flag | |
| 13:25:12 | gibi | mriedem: yeah, forced live migration will be less forced as it can return NoValidHost after this change | |
| 13:25:13 | mriedem | https://github.com/openstack/nova/blob/8c3d02ac3d890f414ce4e05c41d44dca3b385424/nova/compute/api.py#L4374 | |
| 13:25:44 | mriedem | gibi: and i think that's ok - forced live migration could always fail even if you bypassed the scheduler b/c the conductor task still does some prechecks on the forced host | |
| 13:25:45 | gibi | mriedem: which means if every instance will be on nested RP then force livemigration will be equal to non forced livemigration with provided host | |
| 13:26:01 | mriedem | https://github.com/openstack/nova/blob/8c3d02ac3d890f414ce4e05c41d44dca3b385424/nova/conductor/tasks/live_migrate.py#L160 | |
| 13:26:13 | mriedem | like, self._check_host_is_up(self.destination) is the ComputeFilter | |
| 13:26:20 | mriedem | self._check_destination_has_enough_memory() is the RamFilter | |
| 13:26:27 | mriedem | etc | |
| 13:26:56 | mriedem | i'd really like to just get rid of that _check_requested_destination method | |
| 13:27:11 | gibi | mriedem: OK, this seems to be a way forward to eventually get rid of the force live migration altogether | |
| 13:27:28 | jaypipes | mriedem: "recheck slow node" <-- worst 90s band name EVAH. | |
| 13:27:46 | mriedem | jaypipes: it's definitely not as good as butthole surfers | |
| 13:27:52 | jaypipes | indeed. | |
| 13:28:22 | jaypipes | true fact: my high school band in the early 90s was called "Slow Children at Play". | |
| 13:28:46 | mriedem | highly offensive | |
| 13:28:50 | jaypipes | embarrassing, I know. | |
| 13:29:43 | mriedem | https://www.youtube.com/watch?v=SkjJLQUhxks | |
| 13:29:49 | mriedem | now i know what needs to be playing this morning | |
| 13:32:44 | mriedem | bauzas: depending on where you check if you should ignore the force flag it could get messy, | |
| 13:32:45 | mriedem | https://github.com/openstack/nova/blob/8c3d02ac3d890f414ce4e05c41d44dca3b385424/nova/compute/api.py#L4359 | |
| 13:32:52 | mriedem | because the api determines what gets passed to conductor | |
| 13:32:56 | mriedem | it's all very tightly coupled | |
| 13:33:21 | mriedem | i.e. if force is True, the requested host parameter isn't passed to conductor, but the request spec is set with the requested_destination | |
| 13:33:51 | mriedem | but if force is True, the request spec is untouched and the requested host is passed to conductor | |
| 13:33:55 | mriedem | and conductor has to know what that means | |
| 13:34:10 | gibi | mriedem: I see | |
| 13:34:21 | mriedem | i assume the logic to determine if the instance has allocations against nested RPs should probably live in conductor | |
| 13:34:25 | mriedem | so we don't block the API response | |
| 13:34:34 | mriedem | although having said that.... | |
| 13:34:52 | mriedem | before some microversion, live migration is aysync rpc call from api-conductor-scheduler until we pick a host and cast to it | |
| 13:35:15 | mriedem | https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id31 | |
| 13:35:34 | mriedem | meaning it's pretty easy to timeout the API while picking hosts before 2.34 | |
| 13:35:56 | mriedem | cold migrate is the same way - it's all synchronous until we cast to the chosen compute | |