| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-11-01 | |||
| 19:15:46 | sean-k-mooney | yep that is what i was about to type but had not decided how to phase it | |
| 19:16:07 | mriedem | https://blueprints.launchpad.net/nova/+spec/placement-notifications | |
| 19:16:13 | sean-k-mooney | well this is a much more positive resonce to this idea then i had expected | |
| 19:17:29 | sean-k-mooney | if we had an owner attribute on every provider and a api to register owner with call backs then each service could register a subsciption to the rps they own | |
| 19:19:20 | mriedem | and if ifs and buts were candy and nuts we'd all have a merry christmas | |
| 19:19:35 | efried | I was thinking much simpler to start. | |
| 19:19:49 | efried | You could register for a notification any time $rp_uuid is touched. | |
| 19:20:11 | efried | which includes "create a resource provider with $rp_uuid as a root", which solves the use case we were discussing. | |
| 19:20:20 | sean-k-mooney | efried: i considered that but that could be a lot of RPs | |
| 19:20:32 | efried | Only one per host | |
| 19:20:45 | sean-k-mooney | that said i guess you would only have to do that on creating the rp the first time | |
| 19:20:51 | sean-k-mooney | at least for clean deployments | |
| 19:20:52 | cfriesen | sean-k-mooney: does nova-compute need to know about the child resource providers that cyborg created? | |
| 19:21:05 | sean-k-mooney | cfriesen: i dont think so | |
| 19:21:24 | sean-k-mooney | cfriesen: not in any of the interaction specs i have seen | |
| 19:21:25 | efried | cfriesen: Yeah, we talked about that above; the virt driver needs to know about them for purposes of whitelisting, deploying/attaching, etc. | |
| 19:21:39 | sean-k-mooney | efried: no it does not | |
| 19:21:48 | sean-k-mooney | the whitelisting is cyborges job | |
| 19:22:33 | sean-k-mooney | and deploy/attaching will be not dont in term of the VARs or whatever the equivalent of a port bining has become | |
| 19:22:59 | cfriesen | assuming nova owns a specific set of resource providers, and it's the only thing consuming from those resource providers (can we assume that) then it should only have to update inventory once at startup. | |
| 19:23:03 | openstackgerrit | Merged openstack/os-vif master: Do not import pyroute2 on Windows https://review.openstack.org/614728 | |
| 19:23:05 | ldau | Hi, somebody has installed all-in-one openstack using vmware as hypervisor? | |
| 19:23:38 | sean-k-mooney | cfriesen: that is the assumtion we stated in denver so yes i think that is still ture | |
| 19:23:39 | cfriesen | now if anything else can consume those resources, then we need the periodic inventory update | |
| 19:23:46 | efried | sean-k-mooney, cfriesen: if all of that is true, then we can indeed resolve the TODO that mriedem just blew away. | |
| 19:24:13 | efried | cfriesen: You mocking this up? | |
| 19:24:24 | cfriesen | not me. :) | |
| 19:24:52 | efried | cfriesen: "Consume the resources" doesn't matter. Changing inventory matters, but only for the providers I onw. | |
| 19:24:53 | efried | own | |
| 19:25:06 | efried | we don't cache allocation/usage data. | |
| 19:25:44 | cfriesen | efried: agreed. I guess it'd have to be something like CPU/RAM hotplug where it actually changes the inventory | |
| 19:26:11 | efried | But that would be noticed by the virt driver, which would update_provider_tree, which the rt would flush back. | |
| 19:26:13 | sean-k-mooney | cfriesen: it would be the virtdirver that would do that however | |
| 19:26:28 | efried | IOW, we're not getting rid of the cache. We're getting rid of all the cache *refreshing*. | |
| 19:26:39 | sean-k-mooney | efried: yes | |
| 19:26:46 | efried | sean-k-mooney: you mocking this up? | |
| 19:26:52 | efried | or is mriedem? | |
| 19:27:19 | mriedem | i stopped paying attention, what now? | |
| 19:27:20 | sean-k-mooney | efried: if we just disable the refesh in the config dose that not effectivly mock it up | |
| 19:27:51 | efried | mriedem: We're operating on the hypothesis that nova does *not* in fact need to know if outside agents create child providers that they will continue to own. | |
| 19:28:06 | efried | mriedem: And if that's true, we do *not* in fact need to refresh the cache, ever. | |
| 19:28:20 | efried | mriedem: So we *can* in fact resolve the TODO you just removed. | |
| 19:28:42 | efried | sean-k-mooney: More or less, yeah. Which is what CERN did. Which they seem to have had success with. | |
| 19:28:50 | mriedem | how about someone poop this out in the ML and get it sorted out there when gibi, jaypipes and cdent can also weigh in | |
| 19:29:00 | efried | sean-k-mooney: I think there's more we can do, though. | |
| 19:29:27 | mriedem | i think in general, we should default to *not* cache b/c of the cern issue, and only allow caching if you want to opt-in b/c you have a wildly busy env where inventory is changing a lot | |
| 19:29:29 | efried | mriedem: What was your idea to get the compute RP creation happening only once? | |
| 19:29:31 | mriedem | which i guess is a powervm thing | |
| 19:29:38 | sean-k-mooney | efried: yes proably | |
| 19:29:59 | mriedem | efried: yes, create the compute node root rp when the compute node is created, otherwise don't attempt to do the _ensure_resource_provider thing again | |
| 19:30:45 | mriedem | i.e. is it a powervm thing to be swapping out disk and such on the fly and expect nova-compute to just happily handle that? | |
| 19:30:57 | cfriesen | mriedem: changing inventory, or changing usage? | |
| 19:31:02 | mriedem | inventory | |
| 19:31:17 | mriedem | anyway, that probably doesn't matter here, | |
| 19:31:27 | cfriesen | do we expect anyone to have wildly changing inventory? I would have thought inventory is relatively stable. | |
| 19:31:27 | mriedem | we get the inventory regardless to know if it changed so we can push updates back to placement | |
| 19:31:35 | mriedem | cfriesen: that's what i said about 2 hours ago | |
| 19:31:37 | sean-k-mooney | mriedem: if its somthing that is discoverd by the virt driver its not an issue if it chagnes | |
| 19:32:26 | mriedem | i also don't think we really need to worry about refreshing aggregate relationships in the compute, | |
| 19:32:29 | efried | mriedem: I contend it doesn't matter if powervm (or any driver) changes inventory every single periodic. Because update_provider_tree is getting whatever the previous state of placement was (because placement isn't changed yet) and then update_from_provider_tree is flushing that back to placement *and* updating the cache accordingly. | |
| 19:32:30 | mriedem | since we don't do anything with those yet | |
| 19:32:38 | efried | yeah, what sean-k-mooney said, only bigger. | |
| 19:33:38 | sean-k-mooney | so do we all agree we dont need to refesh the cache in any case that is atleas emitly obvious to us | |
| 19:33:53 | efried | tentatively yes | |
| 19:34:35 | mriedem | i would have thought a lot of prior discussion about why we even have a cache in the first place has happene | |
| 19:34:37 | mriedem | *happened | |
| 19:34:57 | mriedem | therefore it seems pretty severe to just all of a sudden say, "oh i guess we don't" | |
| 19:35:19 | mriedem | and if there are reasons, do those reasons justify us caching by default | |
| 19:35:35 | mriedem | anyway, those are questions for the ML, not irc | |
| 19:35:37 | sean-k-mooney | if so then should we start with a patch to default the refresh to off. and a mailing list post to see what operators think/other feedback | |
| 19:35:55 | mriedem | cern is the only deployment big enough and new enough that i've heard complain about that refresh | |
| 19:36:01 | mriedem | not sure if mnaser is doing anything about it | |
| 19:36:20 | mnaser | hi | |
| 19:36:42 | mriedem | mnaser: tl;dr do you turn this way down? https://docs.openstack.org/nova/latest/configuration/config.html#compute.resource_provider_association_refresh | |
| 19:37:01 | mriedem | to avoid computes DDoS'ing placement every 5 minutes | |
| 19:37:49 | mnaser | i didn't know about that but i do feel like placement gets waaaaay too much unnecessary traffic | |
| 19:38:05 | mnaser | an idle cloud (aka literally no new vms being created/deleted) will constantly hit placement | |
| 19:38:22 | efried | so mriedem, to do the thing you were talking about earlier, we would add is_new_compute_node as a kwarg from _update_available_resource into _update => _update_to_placement and then only call _get_provider_tree_and_ensure_root if it's true? | |
| 19:38:44 | mriedem | mnaser: inventory updates baby! | |
| 19:38:47 | mnaser | i'm all in favour of minimizing the amount of traffic that placement gets however a lot of times we end up seeing weird stuff happen in placement db | |
| 19:38:58 | mnaser | so if we have to edit stuff via the api | |
| 19:39:06 | mnaser | it'd be nice to just know they work | |
| 19:39:17 | mriedem | efried: that's what i was thinking yeah, and nearly starting writing it, but then you guys all said in_tree was mega importante | |
| 19:39:42 | efried | mnaser: True story. If you edit something by hand, and we've switched off all this cache refreshing, the only way you're going to pick it up again is to restart the compute service. | |
| 19:39:52 | efried | or maybe we can work a HUP in there or something. | |
| 19:40:11 | mriedem | HUP is how we refresh the enabled/disabled cell cache in the scheduler | |
| 19:40:34 | sean-k-mooney | and any of the mutable config stuff if we have it so HUP makes sense | |
| 19:40:36 | mnaser | but really the only editing ive had to do was delete/remove allocations | |
| 19:40:42 | mnaser | that were stale for $reasons | |
| 19:40:50 | sean-k-mooney | mnaser: oh if its allocation that fine | |
| 19:40:54 | efried | mriedem: based on having toggled some kind of setting, right? I.e. HUP is a no-op if you haven't changed anything. | |
| 19:40:58 | mnaser | so forgive me for my silly question but | |
| 19:41:22 | mnaser | why do computes care about that information | |
| 19:41:31 | efried | mnaser: which information specifically? | |
| 19:41:37 | efried | allocations? | |
| 19:41:46 | mnaser | well, whatever api hits all the time, i think its allocations? | |
| 19:41:57 | efried | what hits the API all the time is inventory, providers, aggregates. | |
| 19:42:18 | mnaser | but inventory can be a one time hit on start up because afaik the state of that is pretty darn static right | |
| 19:42:37 | sean-k-mooney | no this check aggretes and traits on the provider not the assoications | |
| 19:42:38 | efried | mnaser: And what we're discussing is, the virt drivers need to know what that stuff looks like so they can *modify* the provider layout, inventory, etc. | |