| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-03-01 | |||
| 14:22:02 | sean-k-mooney | Sundar: rebuild is confied to the same host | |
| 14:22:07 | sean-k-mooney | Sundar: it will never do a migrate | |
| 14:23:06 | Sundar | sean-k-mooney: If the rebuild changes the image, and the new image has different traits, is that not a problem? | |
| 14:23:14 | sean-k-mooney | fried_rice: i think there are edgecses such as changin numa toplogy that might require it if you have sriov port or hardwar offload ovs or you use the numa aware vswitch feature | |
| 14:23:33 | sean-k-mooney | Sundar: we will fail the rebuild if its not valid for the current host | |
| 14:23:40 | mriedem | rebuild doesn't mess with port bindings | |
| 14:23:43 | sean-k-mooney | rebuilt with same image bypasses the scheduler | |
| 14:23:50 | sean-k-mooney | rebuilt with different hits the schduler | |
| 14:23:59 | giblet | does resize-to-same host is just allows but never forces the resize to keep the server on the same host | |
| 14:24:05 | mriedem | resize to same host calls the same methods to change port bindings, but i think the neutron api code we have doesn't do the update if the host doesn't change | |
| 14:24:26 | mriedem | https://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L3230 | |
| 14:25:17 | sean-k-mooney | giblet: right if the resize was invalid on the same host it would do a cold migraton to a vliad host if one exits in that case | |
| 14:27:03 | sean-k-mooney | mriedem: in princiable a rebind with a new image could contain tratis that may affect the neutro ports but in practice we have never need to cater for that case todate so ya for rebuild we have never needed to touch the port bindings | |
| 14:27:28 | giblet | fried_rice: to answer your original question server move operations (even resize on same host) are not covered by the current implementation so your question needs to be answered during Train | |
| 14:27:51 | fried_rice | giblet: Okay, good to know. | |
| 14:28:37 | giblet | fried_rice: my general idea regarding move is, to re-query resoruce request from neutron ports, include it to the scheduling. conductor will transparently handle migration allocation for ports then. | |
| 14:28:59 | fried_rice | giblet: It would be nice to prefer candidates where the ports don't move. | |
| 14:29:12 | fried_rice | which sounds like more hacked up matching. | |
| 14:29:44 | giblet | fried_rice: so during resize-to-same-host case it would be nice to keep the ports allocated to from the same RP, I seenow | |
| 14:29:50 | sean-k-mooney | fried_rice: for what it worth the image trait edgecase for neutron port i am tink of would be a a required or forbding trati for a partacalr nic vendor when using sriov. we talked about this as a way for image to expres i have drivers for vendor X but not Y | |
| 14:30:56 | giblet | fried_rice: the problem with that is nova-scheduler always selects the first allocation for a host even if there is more than one candidate is returned for that host | |
| 14:30:59 | giblet | by placement | |
| 14:31:11 | sean-k-mooney | fried_rice: well its not really more hacked up match and more a weigher. | |
| 14:31:38 | fried_rice | weighers are by definition hacks | |
| 14:31:43 | fried_rice | ...said someone I'm sure | |
| 14:32:11 | sean-k-mooney | ha perhaps | |
| 14:32:49 | giblet | fried_rice: https://github.com/openstack/nova/blob/68d4cb44edfe7b5f85618254cc906dcef44f7ce3/nova/scheduler/filter_scheduler.py#L238 | |
| 14:33:07 | fried_rice | yup | |
| 14:33:14 | sean-k-mooney | but unlike filter they are intended to handel the optimisation of the best host rather then filter which is what we want in thiscase. although as giblet mething we might need to look at multiple allcoation candiates which the weigher dont play a role in | |
| 14:34:06 | giblet | nova filter scheduler does not filter and weigh allocation candidates today | |
| 14:34:13 | giblet | it filter and weigh hosts only | |
| 14:34:21 | sean-k-mooney | yes im aware | |
| 14:34:46 | sean-k-mooney | but i think what fried_rice was asserting sounded like a weigher of the allocation candiates | |
| 14:35:01 | giblet | so we cannot prefer the candidate that keeps the port allocated from the same RP during resize-to-same-host | |
| 14:35:12 | fried_rice | sean-k-mooney: right: prefer candidates with [these ports] | |
| 14:35:17 | fried_rice | giblet: yes. | |
| 14:35:26 | fried_rice | we can't, but we should. | |
| 14:35:39 | sean-k-mooney | can you use in_tree to help | |
| 14:35:51 | giblet | fried_rice: soo we have to extend the filter interface to know about allocation candidates not just hosts | |
| 14:35:52 | sean-k-mooney | i guess that would force the same host | |
| 14:35:53 | fried_rice | well, we should be using in_tree for resize-to-same-host anyway. | |
| 14:36:07 | fried_rice | But that's unrelated to the problem of not moving the ports. | |
| 14:36:21 | fried_rice | giblet: I was just talking to mriedem about that the other day. | |
| 14:36:27 | fried_rice | and Sundar as well. | |
| 14:36:45 | sean-k-mooney | fried_rice: were we not talking about a subtree version too i dont know if we could restict the neutron request to the same RPs they had previously | |
| 14:36:57 | fried_rice | sean-k-mooney: Yes, there's a spec up for that. | |
| 14:36:59 | sean-k-mooney | i dont think the placement sysntax is that granuarly | |
| 14:37:03 | fried_rice | nope, not today. | |
| 14:37:03 | giblet | fried_rice: can we tell our preference to placement about return those a_c first that keeps the port allocated from the same RP? | |
| 14:37:19 | fried_rice | giblet: Not yet, but with the subtree thing we might be able to. | |
| 14:37:56 | sean-k-mooney | ya so resize to same host would basice add in_tree to the numbered requst group for the prot resouce or whatever the spec says | |
| 14:38:41 | sean-k-mooney | fried_rice: sound like a thing to solve in train | |
| 14:38:43 | fried_rice | Re allocation candidates to filters: I was thinking we ought to extend BaseFliter with a new method that accepts the allocation candidate under consideration, as well as the (relevant subset of the) provider_summaries. We do the try/except NotImplemented and fall back to the old method so we don't break existing filters. But new filters can then be written to take that information into account. | |
| 14:39:00 | sean-k-mooney | fried_rice: ya that came up before | |
| 14:39:22 | giblet | fried_rice: hm, do you have a link to subtree a_c spec? | |
| 14:39:27 | fried_rice | sec | |
| 14:40:12 | sean-k-mooney | fried_rice: i think passing the allcoation candiates to the filters/werigher makes sence. | |
| 14:40:46 | fried_rice | giblet: Hah, it's yours: https://review.openstack.org/#/c/595236/ | |
| 14:41:12 | giblet | fried_rice: but that is subtree for GET /resource_providers not subtree for a_c | |
| 14:41:34 | fried_rice | mm, well, in the spirit of in_tree, we should implement it for GET /a_c as well. | |
| 14:42:10 | fried_rice | giblet: tetsuro has started code: https://review.openstack.org/#/c/636092/ (but for GET /rps) | |
| 14:42:17 | sean-k-mooney | fried_rice: i think that proably should be implemented at the resouce group level not the top level | |
| 14:42:19 | giblet | fried_rice: I haven't tought about that direction yet. The use case in my spec is purely to limit the amount of data neutron needs to read from placemente | |
| 14:42:46 | fried_rice | mriedem: Currently (merged code) does resize-to-same-host even use GET /a_c at all? | |
| 14:43:02 | sean-k-mooney | e.g. this requst_group must be form this sub tree | |
| 14:43:52 | sean-k-mooney | that would allow us to say the general request must be form the compute node sub tree but the neutron bandwith must be form the subtree of the ortinginal RP that the allcoation were form | |
| 14:44:11 | fried_rice | sean-k-mooney: just so. and/or should be from this exact provider. The latter would be better for the case we're talking about. | |
| 14:44:53 | sean-k-mooney | yes the formor would allow nesting to work better when we model sriov nics in placmeent | |
| 14:44:58 | giblet | wait, we don't want to force resize-to-same-host to only work for the same host. We still want to get back candidates for other hosts. So we cannot simply restrict the a_c querty to a given tree | |
| 14:45:02 | giblet | or subtree | |
| 14:45:35 | fried_rice | eh? By definition, resize-to-same-host is... to the same host. Isn't it?? | |
| 14:45:41 | giblet | fried_rice: nope | |
| 14:45:43 | sean-k-mooney | both the bandwith request and vf request woudl be in the same group but they could be in different provdiers depending on how we model it | |
| 14:45:51 | giblet | fried_rice: it is a config option that allows resize to use the same host too | |
| 14:46:11 | sean-k-mooney | fried_rice: it does not gurarentee it | |
| 14:46:12 | fried_rice | I think mriedem is working on making it so? https://review.openstack.org/#/c/638791/ | |
| 14:46:13 | giblet | fried_rice: allow_resize_to_same_host | |
| 14:47:20 | sean-k-mooney | fried_rice: by default we dont allow resize to same host. when you enable it in the nova.conf it just allows it as a candiate but unlees you also force the host it could be resized to a different host | |
| 14:48:16 | sean-k-mooney | fried_rice: mriedem is working on removing the double allocation problem in the case we actully do resize on the same host | |
| 14:48:31 | fried_rice | mm | |
| 14:49:45 | fried_rice | mriedem: In fact, do we even use GET /a_c for resize in general, or do we just build the new allocs by parsing the new flavor?? | |
| 14:50:08 | giblet | there is a full scheduling for resize including a_c query | |
| 14:50:25 | giblet | only rebuild has a partial scheduling (no a_c) | |
| 14:50:38 | giblet | afaik | |
| 14:53:24 | giblet | fried_rice: resize is just a cold_migrate with a changing flavor https://github.com/openstack/nova/blob/68d4cb44edfe7b5f85618254cc906dcef44f7ce3/nova/conductor/tasks/migrate.py#L134 | |
| 14:53:52 | fried_rice | hm | |
| 14:54:22 | giblet | fried_rice: here is the select_destination call https://github.com/openstack/nova/blob/68d4cb44edfe7b5f85618254cc906dcef44f7ce3/nova/conductor/tasks/migrate.py#L235 | |
| 14:55:21 | fried_rice | okay. | |
| 15:00:34 | mriedem | fried_rice: yes resize to same host does GET /a_c | |
| 15:00:45 | fried_rice | okay. | |
| 15:01:10 | fried_rice | mriedem: Then something I just sent on the ML may be entirely wrong. | |
| 15:01:18 | fried_rice | o/ leakypipes | |
| 15:02:43 | tssurya | mriedem: thanks! | |
| 15:03:22 | cfriesen | mdbooth_: no worries. thanks for fixing it up. | |
| 15:09:40 | cfriesen | mdbooth: I assume that change has your approval since you resubmitted it? | |
| 15:12:56 | melwitt | o/ | |
| 15:13:07 | fried_rice | jroll: Thanks for that email. Turns out this will affect (at least) nova-powervm's OOT driver https://github.com/openstack/nova-powervm/blob/master/nova_powervm/virt/powervm/driver.py#L230 | |
| 15:13:16 | fried_rice | o/ melwitt | |
| 15:15:29 | melwitt | fried_rice: we were considering adding a warning log to the patch if a driver needs to be updated. do you think that would be useful or do you think the reno alone is good enough? | |
| 15:15:57 | fried_rice | melwitt: I think it's a good idea. | |