| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-05-09 | |||
| 14:33:54 | mriedem | in_tree for strict affinity but that's not backportable | |
| 14:33:58 | mriedem | it's also racy | |
| 14:34:19 | ganso | mriedem: so, this problem is likely caused by a bug that got fixed, correct? or was the periodic task added in ocata? | |
| 14:34:22 | efried | cool, just making sure I had the big picture | |
| 14:34:26 | tssurya | mriedem: no no ^ that fix is just making limits None if affinity/anti is requested | |
| 14:34:41 | tssurya | like we did earlier on for force_hosts/nodes | |
| 14:34:49 | mriedem | ganso: the periodic was always around, | |
| 14:34:49 | tssurya | only that needs to be backported | |
| 14:34:58 | mriedem | the stats thing i fixed was a regression in ocata so shouldn't affect you on mitaka | |
| 14:36:32 | mriedem | ganso: for that num_instances thing, you'd likely need to add some debug logging to that update_available_resource flow to see what it's doing, | |
| 14:36:58 | mriedem | but it should 0 out num_instances in the stats at the start of the run, and then add instances to the stats as it processes instances for that host/node | |
| 14:37:31 | mriedem | ganso: does https://developer.openstack.org/api-ref/compute/#list-hypervisor-servers also show 4 servers on that hypervisor? | |
| 14:38:16 | efried | tssurya: We have in_tree in Stein though... | |
| 14:38:51 | efried | ...so you could make a backportable patch that adds in_tree for positive affinity and removes the limit for anti-affinity. | |
| 14:39:01 | efried | ...and then if you want to backport further, use this one. | |
| 14:39:03 | ganso | mriedem: hmmm is that equivalent of "openstack hypervisor list" ? | |
| 14:39:09 | efried | tssurya: is that the plan? | |
| 14:39:35 | mriedem | efried: tssurya: it should be a 2 part series at least, | |
| 14:39:37 | ganso | mriedem: I have confirmed that the database has the value "2", so the database is wrong | |
| 14:39:41 | tssurya | efried: oh didn't realise in_tree was there in Stein since it was used only in train | |
| 14:39:52 | tssurya | but what you said makes sense | |
| 14:39:56 | mriedem | tssurya: but the bug goes back further than that | |
| 14:39:57 | efried | tssurya: I *think* it's in stein, sec... | |
| 14:40:06 | mriedem | in_tree usage in nova is new in train | |
| 14:40:08 | mriedem | from tetsuro | |
| 14:40:35 | tssurya | mriedem: yup I think the bug is from rocky, and it would be good for us to have it in rocky | |
| 14:41:02 | mriedem | it probably goes back further than that | |
| 14:41:12 | mriedem | my guess is pike | |
| 14:41:39 | efried | tssurya: Confirmed, in_tree is in Stein. | |
| 14:41:43 | efried | So you could do this in three parts. | |
| 14:41:51 | mriedem | efried: in_tree is in stein in placement right? | |
| 14:41:57 | efried | yes --^ | |
| 14:42:00 | efried | 1.31 | |
| 14:42:00 | mriedem | but the nova object usage of it is not | |
| 14:42:07 | efried | does that matter? | |
| 14:42:14 | mriedem | if you're using versioned objects it does yes | |
| 14:42:24 | efried | versioned objects | |
| 14:42:34 | efried | you mean the RequestSpec? | |
| 14:42:39 | mriedem | RequestGroup | |
| 14:42:40 | mriedem | but yes | |
| 14:42:52 | mriedem | https://review.opendev.org/#/q/topic:bug/1777591+(status:open+OR+status:merged) | |
| 14:43:29 | mriedem | it's really 2 changes, one to backport which just disables the limit if the server is in a group | |
| 14:43:34 | efried | groan, okay. | |
| 14:43:43 | mriedem | and another to be smarter about in_tree if it's in a strict affinity policy | |
| 14:43:49 | mriedem | but noting that ^ is racy | |
| 14:44:34 | tssurya | mriedem, efired: ok so we stick to what we discussed in the ptg right ? | |
| 14:44:49 | tssurya | the new in_tree affinity thing stays in train then | |
| 14:45:12 | tssurya | mriedem: yea you might be right, I can trace it back to at least queens | |
| 14:45:16 | mriedem | max_placement_results was new in queens so i guess it goes to queens | |
| 14:45:33 | mriedem | ganso: no not hypervisor list, sec | |
| 14:45:40 | efried | tssurya: That's not my favorite misspelling of my handle. | |
| 14:46:02 | mriedem | she's channeling her inner trump | |
| 14:46:04 | tssurya | efried: yikes, I didn't even realised I missplled it :D | |
| 14:46:21 | mriedem | tssurya is a big fan, some are saying the biggest fan | |
| 14:46:27 | mriedem | folks | |
| 14:46:37 | tssurya | mriedem: :P | |
| 14:46:37 | efried | anyway, +2 on this patch, thanks for explaining | |
| 14:47:17 | tssurya | thanks efried, mriedem | |
| 14:47:20 | mriedem | ganso: more like this https://docs.openstack.org/python-novaclient/latest/cli/nova.html#nova-hypervisor-servers | |
| 14:47:40 | mriedem | ganso: i'm wondering if ^ will show 4 for that node while running_vms shows 2 | |
| 14:47:46 | ganso | mriedem: oh I see! | |
| 14:47:52 | ganso | mriedem: will run it and report back! | |
| 14:47:53 | mriedem | if ^ shows 2 servers as well, then you have some issue | |
| 14:48:07 | mriedem | like, the db might say 2 of those guests you think are on that node actually aren't | |
| 14:48:12 | mriedem | e.g. failed live migration or something | |
| 14:50:08 | ganso | mriedem: it does list 4 VMs! =) | |
| 14:51:00 | mriedem | ok so yeah the stats stuff is busted somehow, but you'd likely need to add logging statements to the code to debug it | |
| 14:51:55 | ganso | mriedem: ok, so... I am curious on how I could reset the value, and double check if it is being recalculated incorrectly, or if it is not being recalculated at all | |
| 14:52:42 | ganso | mriedem: like, if I restart the service (nova-cpu I'd assume), it would reset to 0 and recalculate? Does it help if I set the value to 0 in the database and then restart the service? | |
| 14:53:13 | mriedem | the periodic should set it every time | |
| 14:53:26 | mriedem | so you could set it to 0 in the db if you want and wait for the periodic to run, or restart the service | |
| 14:54:21 | ganso | mriedem: ok, will try that, thank you! | |
| 14:54:43 | openstackgerrit | Merged openstack/nova stable/rocky: Use migration_status during volume migrating and retyping https://review.opendev.org/657577 | |
| 14:59:05 | mriedem | tssurya: comments in that change, but it's not just the group hint | |
| 14:59:14 | ganso | mriedem: sorry, one more question. I am trying to track the name of the periodic task, I haven't seen periodic_task decorators or where they are registered in resource_tracker.py. But it seems the periodic task is either "update_available_resource" or another method that invokes this one. Could you please confirm? | |
| 14:59:15 | mriedem | we also have same_host/different_host hints/filters | |
| 14:59:32 | mriedem | ganso: it's the ComputeManager.update_available_resource method | |
| 14:59:43 | mriedem | called on start of the compute service and in a periodic | |
| 14:59:44 | ganso | mriedem: oh it starts in the ComputeManager, thank you! | |
| 14:59:57 | tssurya | mriedem: oh hmm looking | |
| 15:01:18 | mriedem | https://docs.openstack.org/nova/latest/admin/configuration/schedulers.html#samehostfilter | |
| 15:01:41 | mnaser | so it looks like the kernel that enables nested by default (4.19) also added a gate that blocks live migrations if nested virt is enabled p | |
| 15:01:43 | jangutter | Did the ptg etherpad finally die? | |
| 15:02:10 | mnaser | ERROR nova.virt.libvirt.driver [-] [instance: 738eb188-1545-4126-b05b-54d384e55f73] Live Migration failure: internal error: unable to execute QEMU command 'migrate': Nested VMX virtualization does not support live migration yet: libvirtError: internal error: unable to execute QEMU command 'migrate': Nested VMX virtualization does not support live migration yet | |
| 15:02:29 | mnaser | so by default vmx is enabled, so every instance is not live migratable... | |
| 15:02:32 | tssurya | mriedem: I have never used that filter before, but since I am fixing it for the other two filters, I will update the patch for this one as well | |
| 15:02:54 | tssurya | and https://docs.openstack.org/nova/latest/admin/configuration/schedulers.html#differenthostfilter like you have said | |
| 15:03:21 | mriedem | i really wish we could functionally test this code to recreate the bug but i don't think there is an easy way to do that | |
| 15:03:35 | tssurya | jangutter: I have been trying to access it too :( not sure if someone has a backup | |
| 15:04:38 | tssurya | mriedem: you mean the bug I am working on ? | |
| 15:11:14 | mriedem | tssurya: yes | |
| 15:11:36 | mriedem | but there isn't really a good way to do that with functional tests that don't involve stubbing placement responses, which defeats the purpose of a functional test | |
| 15:14:45 | mnaser | I’m trying to figure out how I can make both nested virt available as an opt in | |
| 15:15:09 | mnaser | But also without making complicated host aggregates and flavour explosion | |
| 15:18:29 | mriedem | required trait on vmx? | |
| 15:20:44 | mriedem | libvirt computes with vmx enabled would report the HW_CPU_X86_VMX trait right? | |
| 15:20:59 | mriedem | and you could have flavors and/or images which require that trait so the user can opt into nested virt that way | |
| 15:30:50 | mriedem | live migration is going to be hairy though right? because you could have instances land on those hosts that don't want nested virt and then you can't live migrate them? | |
| 15:31:13 | mriedem | not sure if "Live Migration failure: internal error: unable to execute QEMU command 'migrate': Nested VMX virtualization does not support live migration yet: libvirtError: internal error: unable to execute QEMU command 'migrate': Nested VMX virtualization does not support live migration yet" is a problem if vmx is on the source, dest or both | |
| 15:31:28 | mnaser | right, but then the idea is to make it opt-in and have a note that says "you won't be live migrated if you enable nested virtualize" | |