Earlier  
Posted Nick Remark
#openstack-nova - 2019-07-08
15:03:15 efried no hurry
15:03:22 efried thanks
15:09:28 stephenfin lyarwood: Could you send this on its merry way? https://review.opendev.org/#/c/667355/
15:11:04 lyarwood stephenfin: looking
15:11:48 lyarwood stephenfin: sorry I did mean to sort that out last week once the stein change landed
15:11:52 lyarwood stephenfin: done
15:13:07 mriedem gibi: comments in https://review.opendev.org/#/c/669188/ just so i'm sure i'm following it correctly (i know this patch was because i brought it up elsewhere)
15:13:57 gibi mriedem: looking..
15:26:43 gibi mriedem: replied. I only added some extra explanation but I think we agree.
15:27:22 gibi mriedem: I can re-spin the patch to fix the test redundancies
15:28:46 mriedem yeah just fix the test and i'm +2
15:28:57 gibi mriedem: OK, I will do it quickly
15:29:51 cdent mriedem, efried : I have a situation where under high load the _update_to_placement call made at the end of instance_claim in the compute manager can fail on ResourceProviderConflict all 4 retry attempts (because of nova-scheduler simultaneously making many allocations to the same resource provider). This fails the instance build even though the instance did build.
15:30:52 efried cdent: That is very interesting.
15:31:04 cdent I'm considering a hack to make instance_claim not call _update_to_placement and just letting the periodic job do that. The reason _update_to_placement is actually talking to placement is because inventory (DISK_GB max_unit) does change after many (most) instance creations
15:31:30 cdent ideally that max_unit thing wouldn't be in place but that's not really any immediate option
15:31:36 efried I'm guessing backing off the retry interval wouldn't be of help, because the problem is the timing between the GET and the PUT(s).
15:31:49 sean-k-mooney cdent: were we not looking at disabling the periodic job at one point
15:31:51 efried wait, what?
15:32:00 efried max_unit changes?
15:32:24 cdent to account for multiple different source of one disk_gb in a cluster
15:32:26 mriedem cdent: is the vcenter driver reporting different max_unit DISK_GB from update_provider_tree during the claim?
15:32:28 cdent being presented as one disk
15:32:47 sean-k-mooney cdent: you mean for things like ceph
15:32:59 openstackgerrit Balazs Gibizer proposed openstack/nova master: Remove assumption of http error if consumer not exists https://review.opendev.org/669188
15:33:00 mriedem this is likely not libvirt/ceph
15:33:10 mriedem it's vcenter with shared storage provider or something?
15:33:22 sean-k-mooney cdent: normally it should not need to change and should stay at the total capasity right
15:33:22 cdent vcenter _faking_ shared stored providers
15:33:28 cdent sean-k-mooney: yes
15:33:30 efried oh, this isn't in libvirt, okay. Yeah, in libvirt max_unit == total and doesn't seem to change.
15:33:54 cdent but if you have N datastores in one cluster, no single request can be more than the free space on one of those datastores
15:34:23 efried okay, but as you say, fixing that is unrelated to the 409 bounce
15:34:24 cdent (this is why I've been eager for shared providers, as it could fix this (except that storage "policies" break all that)
15:34:27 sean-k-mooney cdent: well if you have over allcoation set to somthing other then 1 it could
15:34:30 mriedem sure, but why would max_unit change between initially reporting the inventory and then during the claim?
15:34:34 sean-k-mooney but ya i get you point
15:34:59 efried mriedem: the claim itself reduces the amount of free space on one of those disks
15:34:59 mriedem when the service starts up, it runs upt which should report the max_unit from the Nth datastore with the most amount of total disk right?
15:35:04 sean-k-mooney we physically could not allocate more then the free space on the data store
15:35:40 cdent let's assume for the moment that the max_unit hack is immutable as that's not really germane to the point, it's just the proximate cause
15:35:58 mriedem efried: couldn't we make that same argument for the libvirt driver then?
15:36:04 kashyap melwitt: efried: On that 'initenv' change (https://review.opendev.org/#/c/667976/2), doesn't it seem like a broken detection by 'cloud-init'?
15:36:09 gibi mriedem: done https://review.opendev.org/669188
15:36:11 cdent the point is that a failed _update_to_placement during instance claim (which is about inventory, traits and aggregates, not allocations) can fail an already suceeded instance
15:36:26 sean-k-mooney mriedem: i dont think we should be adjusting max_unit in either case
15:36:32 efried mriedem: In libvirt it's not an issue because we're only looking at one disk, so the (total - usage) alread ylimits.
15:36:35 kashyap [Ignore me, I'll add a comment in the change.]
15:36:37 mriedem cdent: what do you mean by "already succeeded?
15:36:48 efried kashyap: Note the subsequent patch and the bug it points to.
15:36:54 mriedem we do the claim before the driver.spawn right?
15:36:57 sean-k-mooney it should remian at total size and really on palcment to do the free calulation + allcoation raitio
15:37:08 cdent mriedem: let me look at my notes
15:37:19 sean-k-mooney or total size of largest data store i gues for vcenter
15:37:28 mriedem yeah driver.spawn is way late in the build process, it's like the last thing
15:37:40 mriedem first we claim, then we build volumes and networking, then we call driver.spawn
15:37:55 efried anyway, I think the point here is whether we can maybe do without that _update_to_placement at the end of instance_claim? What else is it doing?
15:38:28 mriedem instance_claim calls _update which was historically for updating info on the compute node record
15:38:30 cdent mriedem: yeah, sorry, not that it did work, but _would_ work
15:38:33 mriedem for things like free_vcpus and whatnot
15:38:54 mriedem yeah i was going to say... https://github.com/openstack/nova/blob/86524773b8cd3a52c98409c7ca183b4e1873e2b8/nova/compute/manager.py#L2223 :)
15:38:58 openstackgerrit Sundar Nadathur proposed openstack/nova master: ksa auth conf and client for cyborg access https://review.opendev.org/631242
15:38:59 openstackgerrit Sundar Nadathur proposed openstack/nova master: WIP: Create and bind Cyborg ARQs. https://review.opendev.org/631244
15:38:59 openstackgerrit Sundar Nadathur proposed openstack/nova master: WIP: Add Cyborg device profile groups to request spec. https://review.opendev.org/631243
15:39:00 openstackgerrit Sundar Nadathur proposed openstack/nova master: WIP: Get resolved Cyborg ARQs and add PCI BDFs to VM's domain XML. https://review.opendev.org/631245
15:39:50 mriedem so i think what's being asked is a kwarg on _update to say whether or not to call _update_to_placement
15:39:57 efried though the fact that it's doing something in this case is an argument in favor of keeping it. Kinda wondering what breaks if we don't have that. Presumably it would be possible for the disk allocation to be unsatisfiable late in the spawn process.
15:40:00 mriedem which in the startup and update_available_resource periodic would be yes,
15:40:06 mriedem but in instance_claim you're saying no
15:40:12 cdent mriedem: pretty much, yes
15:40:15 efried configurable ^ perhaps
15:40:30 cdent you'd have to know that if you chose to do that you have to keep the periodic regular
15:40:38 cdent s/regular/frequent/
15:41:32 mriedem reshapes are in that flow but it looks like reshape should only be allowed on startup
15:41:32 cdent what I really want to do is not have inventory changing all the time...
15:41:36 kashyap efried: Yeah, just read the bug. Miguel is right. And this change makes sense. I don't see any security implications here (checked also w/ a libvirt dev)
15:41:59 sean-k-mooney cdent: as mriedem asked earlier is there any reason on start that we could not set teh max_unit to the larges datasotre and then not update it
15:42:07 sean-k-mooney or not update it outside the periodic
15:42:32 mriedem sean-k-mooney: from the upt perspective i'm not sure if the driver knows if it's called from the periodic, on startup, or during a claim
15:42:34 sean-k-mooney e.g. does it really need to be set to the free space
15:42:53 mriedem note that _move_claim will have the same issue here i'd think
15:43:07 cdent a) what mriedem said, b) the idea is to make sure placement has a way to prevent someone asking for more physical disk than is available
15:43:45 cdent mriedem: it's less of a risk there as they a) don't happen as much, b) happen even less in the vmware environment, c) this problem really only shows up when throwing > 2000 vms as the same nova-compute
15:43:57 cdent s/as the/at the/
15:44:11 sean-k-mooney cdent: ya i get that. i wonder if this is somthing we coudl do when we make the inital allocation
15:44:29 mriedem the initial allocation doesn't involve the driver
15:44:30 sean-k-mooney e.g. is this somethign we shoudl consider for all driver in general
15:44:37 sean-k-mooney true
15:44:41 efried kashyap: Thank you. Your votes/comments on those patches will be beneficial. Sounded like melwitt will also appreciate it.
15:44:53 cdent no other driver (that I'm aware of) would need this as they report real and true inventory
15:44:56 sean-k-mooney but shoudl we be doing it for libvirt with ceph/nfs
15:45:21 cdent it's only when you have non-contiguous disk(s)
15:45:52 sean-k-mooney cdent: ok would this be solved in the futrue by representing
15:45:54 mriedem in the libvirt+ceph case, we report total and max_unit the same, and placement will reject requests that are too big because of the capacity calculation in placement, right?
15:46:00 sean-k-mooney the datastores as different shareing providers
15:46:27 cdent sean-k-mooney: yes, except for the thing I said above about something called "storage policy" which would disrupt placement's understanding of where things are
15:46:36 sean-k-mooney mriedem: yes which is fine for ceph as we have a singel pool for vms
15:47:02 mriedem i'd prefer not to have a config option for this behavior,
15:47:07 mriedem you could add a variable on the driver itself,
15:47:22 mriedem which could be controlled by the driver depending on if the vcenter driver is doing this shared storage pool modeling thing

Earlier   Later