| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-08-07 | |||
| 13:47:43 | s10 | efried: yes, I have such ability | |
| 13:48:06 | efried | s10: I can try throwing out a quick revert just to confirm that it does the trick. Stand by. | |
| 13:51:40 | openstackgerrit | Eric Fried proposed openstack/nova stable/pike: DNM: Revert d88b75e https://review.openstack.org/589479 | |
| 13:51:46 | efried | s10: ^ | |
| 13:52:30 | lyarwood | s10: and this is with an images_type of raw? | |
| 13:52:32 | efried | s10: Note: a real revert would be tied to a bug and introduced in master and backported. This is just to confirm. | |
| 13:53:03 | kosamara | efried: alex_xu had proposed a spec for that. The first step is to have pci passthrough GPUs in placement of course. | |
| 13:53:09 | mriedem | yay https://review.openstack.org/#/q/If642e51a4e186833349a8e30b04224a3687f5594 | |
| 13:53:11 | s10 | efried: Before: Took 20.89 seconds to get available resources for nodename. update_available_resource /usr/lib/python2.7/dist-packages/nova/compute/resource_tracker.py:705 | |
| 13:53:29 | s10 | efried: After: Took 11.04 seconds to get available resources for nodename | |
| 13:53:45 | sean-k-mooney | kosamara: the first step to having pcie gpus in placement is having pci devices in placement | |
| 13:53:51 | s10 | If I change virt_size = disk_api.get_disk_size(path) same way, this time reduces to 2 seconds. | |
| 13:54:28 | efried | Okay s10, I'll leave you in lyarwood's capable hands at this point. | |
| 13:54:52 | s10 | lyarwood: yes, image_type is raw | |
| 13:55:08 | mriedem | it's going to be slower b/c it's exec'ing qemu-img info | |
| 13:55:10 | lyarwood | s10: unfortunatley I'm just between calls, could you write this up in a bug and I'll get back to you in ~60mins or so | |
| 13:55:32 | s10 | lyarwood: and preallocate_images=space. I will fill bug report. | |
| 13:58:08 | mriedem | dansmith: want to send https://review.openstack.org/#/q/topic:bug/1784705+(status:open+OR+status:merged)+branch:stable/queens to their maker? | |
| 13:58:55 | dansmith | mriedem: yeah | |
| 14:00:07 | maciejjozefczyk | mriedem: efried hey, about https://review.openstack.org/#/c/520024; we have it on production and it works properly; release is newton | |
| 14:00:52 | efried | maciejjozefczyk: Sweet, thanks for the info. mriedem cdent Ima +2 that sucker. Shall we backport it too? | |
| 14:01:06 | maciejjozefczyk | only one thing is that, as I remember correctly, on nova master was issue with https://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L866 def_resource_change() | |
| 14:01:23 | maciejjozefczyk | efried: so could you please take me a moment to confirm that its fiexed on master, or not? | |
| 14:01:58 | cdent | efried: assume maciejjozefczyk's concerns there are okay, I think a backport would be nice but not critical? | |
| 14:02:53 | mriedem | maciejjozefczyk: you said you think https://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L866 should be removed yes? | |
| 14:03:42 | maciejjozefczyk | mriedem: afailr I know it says all the time 'False'; so the update is not send to the DB | |
| 14:03:54 | maciejjozefczyk | and it ends with old timestamp for compute row | |
| 14:04:04 | maciejjozefczyk | so it could be deleted | |
| 14:04:34 | maciejjozefczyk | It was running all the time because in memory some resources were changed (because of this double-update) so it was always returning 'True' | |
| 14:04:54 | mriedem | is it always False because we've already updated the compute node before we get here? | |
| 14:06:15 | maciejjozefczyk | nope, if you apply my patch - compute is def _update() is called only once. but inside def _update() there is a check if somethings change about ram,disk etc in memory | |
| 14:06:31 | maciejjozefczyk | so without any change - it ends with False and the DB update is not called | |
| 14:06:52 | openstack | Launchpad bug 1785827 in OpenStack Compute (nova) "Performance regression in libvirt get_available_resource()" [Undecided,New] | |
| 14:06:52 | s10 | https://bugs.launchpad.net/nova/+bug/1785827 | |
| 14:07:01 | mriedem | is there any reason to update the compute node record in the db if nothing changed? | |
| 14:07:25 | s10 | lyarwood: ^ i've written a bug report | |
| 14:07:34 | maciejjozefczyk | without my change - it was called basically all the time, because first update was without for ex: shutdown instances, and the second was with (so the amout of ram, disk, etc was always changing - the def _resource_change() was saying 'True') | |
| 14:07:41 | lyarwood | s10: ack thanks | |
| 14:07:47 | maciejjozefczyk | mriedem: exept timestamp, no | |
| 14:07:49 | maciejjozefczyk | except* | |
| 14:07:51 | kosamara | sean-k-mooney: yes, which is what efried 's spec does. | |
| 14:08:30 | maciejjozefczyk | mriedem: but for me if 'nova compute-show' shows that compute is UP and timestamp is new - it says, yea, compute is working | |
| 14:08:51 | maciejjozefczyk | mriedem: maybe somebody use it as source for some scripts | |
| 14:09:01 | maciejjozefczyk | mriedem: but ye, service-list should be used anyway for that pourpose | |
| 14:09:19 | mriedem | i want to say i think there is something in the scheduler that cares about the compute node updated_at time and uses it for some refresh threshold | |
| 14:09:43 | maciejjozefczyk | mriedem: no idea | |
| 14:09:57 | mriedem | HostManager._check_for_nodes_rebalance | |
| 14:10:02 | mriedem | return | |
| 14:10:02 | mriedem | and self.updated > compute.updated_at): | |
| 14:10:02 | mriedem | if (self.updated and compute.updated_at | |
| 14:10:56 | maciejjozefczyk | yep, so thats the issue | |
| 14:11:31 | maciejjozefczyk | mriedem: the code is from placement? | |
| 14:11:40 | mriedem | no that's in the nova scheduler HostManager | |
| 14:11:53 | maciejjozefczyk | mriedem: https://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L929 | |
| 14:12:03 | sean-k-mooney | kosamara: oh i did not know efried had a pci device in placement spec up for stien cool il should review that | |
| 14:12:18 | maciejjozefczyk | mriedem: ah, so it bases on the db, right? | |
| 14:12:21 | mriedem | right | |
| 14:12:21 | kosamara | efried: I would like to contribute. I think I could start with making the libvirt driver report PCI RPs, similar to your spec. I can propose a small spec just for that for Stein. | |
| 14:12:30 | mriedem | https://github.com/openstack/nova/blob/536acbfe0572f10ea84f330f2f29b07ca9279114/nova/scheduler/host_manager.py#L194 | |
| 14:12:55 | kosamara | sean-k-mooney: not in nova, in the nova-powervm fork: https://review.openstack.org/#/c/579359/10/doc/source/specs/rocky/device-passthrough.rst | |
| 14:13:13 | maciejjozefczyk | ok, so I vote for dropping resource_change logic, but first let me see how we use it in our deployment | |
| 14:13:17 | efried | kosamara: That would be cool, please add me as a reviewer. | |
| 14:13:22 | sean-k-mooney | kosamara: if your are doing that can you also make sure to pull the pci feature flags from the pci_devices table in the nova db and add them as traits to the RP | |
| 14:13:52 | maciejjozefczyk | mriedem: anyway my RUN team doesn't scream about this issue anymore | |
| 14:13:55 | mriedem | maciejjozefczyk: since I40c17ed88f50ecbdedc4daf368fff10e90e7be11 i'm not sure this check in the HostState object even matters | |
| 14:14:06 | mriedem | we don't cache HostStates in the scheduler anymore | |
| 14:21:14 | efried | - Specify traits | |
| 14:21:14 | efried | - Specify a resource class | |
| 14:21:14 | efried | - Identify devices to be permitted for passthrough | |
| 14:21:14 | efried | kosamara: One main aspect of the nova-powervm spec that I expect to be carried through to nova proper is a YAML configuration file allowing the operator to: | |
| 14:22:13 | kosamara | sean-k-mooney: I wasn't aware of this info in the pci_devices table. What exactly is it? | |
| 14:22:33 | maciejjozefczyk | mriedem: anyway I need to go, I'll check this resource_updated() logic with my patch once again, I'll leave comment tonight | |
| 14:22:38 | sean-k-mooney | efried: um im not sure about that... given how we did the numa aware vswitch spec i would have assumed we would have used dynamic config insead of a yaml file | |
| 14:22:43 | efried | maciejjozefczyk: Thanks! | |
| 14:23:00 | efried | sean-k-mooney: -1 to dynamic config. | |
| 14:23:19 | kosamara | efried: I may propose something more basic, with the existing passthrough_whitelist conf. | |
| 14:23:50 | efried | sean-k-mooney: I think the only reason we did that instead of yaml is to minimize the effort. | |
| 14:23:55 | sean-k-mooney | kosamara: for network devices we use ethtool ioctls via libvirt to get the nic feature flags such as tcp checksume offload | |
| 14:23:56 | efried | kosamara: Oh dear gods please no. | |
| 14:24:35 | sean-k-mooney | kosamara: adding more stuff to passthough_whitelist is basically an automatic -3 | |
| 14:24:41 | mdbooth | lol | |
| 14:25:12 | efried | sean-k-mooney: We talked about using yaml in Denver. It really makes the most sense for this kind of thing, because trying to manage nested hierarchical data via oslo_config is a major PITA. | |
| 14:25:51 | sean-k-mooney | efried: well there is an argument to be made that today we dont use yaml for any other configs so we should not intoduce it for this feature | |
| 14:25:55 | efried | kosamara: ...Also, automatically generated traits. In my spec we've "namespaced" the generated traits with _POWERVM_ but some of them will potentially overlap on any platform (e.g. vendor & product IDs) | |
| 14:26:10 | sean-k-mooney | efried: that said im not really against it either | |
| 14:26:31 | kosamara | efried: I had it like that in my mind following a previous discussion with sean-k-mooney and gibi. I'll rethink it. | |
| 14:26:37 | efried | sean-k-mooney: IIRC jaypipes was a proponent and even dansmith was in agreement. | |
| 14:27:23 | efried | kosamara: In case the prospect of yaml schema/parsing is intimidating, here's code: https://review.openstack.org/#/c/579289/ | |
| 14:28:15 | sean-k-mooney | efried: well jaypipes didnt want more semantics to the whitelist and having a dedicated config not in nova was cleaner as nova was not using dynamic config at the time. as i said im not against it but its adding another dependicy to nova e.g. yaml parsing | |
| 14:29:01 | sean-k-mooney | efried: are you going to propose that spec to nova propper for stien? | |
| 14:29:58 | sean-k-mooney | efried: if so is the scope just pci devices or generic device passthouhg. we had talked about expanding it to usb/sata devices in denver too but not sure if that is a different spec | |
| 14:30:12 | sean-k-mooney | * should be a different sepc | |
| 14:31:05 | efried | sean-k-mooney: I hadn't yet decided whether to propose a nova spec for Stein or wait until T, but it sounds like kosamara may be interested in doing it for Stein. | |
| 14:31:33 | efried | sean-k-mooney: The way I've written the nova-powervm spec, the schema would be easily extensible to support non-PCI. | |
| 14:31:34 | jaypipes | efried: vendor and product IDs should not be traits. | |
| 14:31:47 | efried | sigh | |
| 14:31:58 | jaypipes | just sayin. | |
| 14:32:07 | mdbooth | lyarwood: Hey, this is interesting | |
| 14:32:40 | sean-k-mooney | efried: i abandonded my nic feature based schduling work in favour of using this in the furutre but not sure ill be working on that now | |
| 14:32:52 | mdbooth | lyarwood: Still investigating your functional failures, came across _terminate_volume_connections in ComputeManager, which does exactly what I proposed | |