| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-12-02 | |||
| 18:47:46 | dansmith | sean-k-mooney: is that a thing? I thought we were focused on pci devices for accelerators right now | |
| 18:48:27 | sean-k-mooney | we are but form a livirt driver point of there is very littel difference between generating the xml for a pci device vs a block device | |
| 18:48:32 | dansmith | Sundar: okay I skimmed over that.. IMHO, keeping the new event definition in its own patch makes sense just because of how much api stuff has to change | |
| 18:49:08 | dansmith | sean-k-mooney: seems fairly different to me.. I understand it's just a chunk of xml, but it's not the same kind of xml we really care about | |
| 18:49:11 | Sundar | dansmith: Agreed. The event definition patch https://review.opendev.org/692707 will stay as is. | |
| 18:49:36 | sean-k-mooney | if we just want a way to create a device (lvm volume) program it (dd image to volume) and validate it in the guset it was a way to do it. | |
| 18:49:41 | dansmith | sean-k-mooney: it's something, it's just not enough | |
| 18:49:52 | dansmith | Sundar: oh sorry I was looking at the wrong two tabs, lemme re-read | |
| 18:50:24 | openstackgerrit | Lee Yarwood proposed openstack/nova master: libvirt: Request and store the decrypted path of an attached encrypted volume https://review.opendev.org/696693 | |
| 18:50:40 | sean-k-mooney | ya i was also looking at ways to fake pci devices in linux and there are some ways but its not trivial | |
| 18:50:47 | Sundar | sean-k-mooney: The code paths within the virt driver are quite different for block devices and PCI devices. So, how does this help? | |
| 18:51:03 | dansmith | Sundar: 631234 all but goes away after you address my feedback | |
| 18:51:22 | dansmith | Sundar: so assuming you mean just bringing forward the cyborg client method, then sure | |
| 18:51:46 | dansmith | Sundar: it would be attaching a block device as an accelerator, so no typical nova block device handling for it | |
| 18:51:50 | sean-k-mooney | its a more complete end to end test that is all. also im not sure how https://review.opendev.org/#/c/689070/ is going to progress and its another way to enable local caching | |
| 18:52:16 | dansmith | sean-k-mooney: I don't think cyborg for block devices is a good way to address the local caching thing | |
| 18:52:24 | dansmith | sean-k-mooney: how is that not going to confuse people? | |
| 18:52:54 | sean-k-mooney | well given samsung are now supporting sriov on there new ssds it might be but sure ill let you get back to it | |
| 18:53:18 | dansmith | well, I guess we can have that discussion, but I definitely don't want to merge that with this effort at the moment | |
| 18:53:34 | dansmith | and since PCI is different enough, I still want to see PCI working for this | |
| 18:53:41 | sean-k-mooney | oh sure. its totally seperate | |
| 18:53:48 | sean-k-mooney | ya | |
| 18:53:57 | sean-k-mooney | i just have not figured out how to fake it yet | |
| 18:54:23 | sean-k-mooney | the kernel netdevsim module was the close i came up with in the past | |
| 18:54:25 | dansmith | yeah, well, as long as we'll have intel ci so we can see it working, that's something | |
| 18:54:30 | Sundar | dansmith: 631234 is a typo, right? Quoting myself from above: I think we need to squash https://review.opendev.org/631245 into the previous patch https://review.opendev.org/631244. Because once the get_resolved_arqs() moves to previous patch, the only things left behind are the virt driver changes. It would arguably be easier to understand those | |
| 18:54:31 | Sundar | changes together with the changes to get the arqs in compute/manager.py. | |
| 18:54:55 | dansmith | Sundar: I meant 631245 yes, sorry | |
| 18:55:01 | sean-k-mooney | ya. the fake driver should allow us to test the api flow. the intel ci should validate it works with real hardware | |
| 18:55:09 | Sundar | Cool, np | |
| 18:55:24 | dansmith | Sundar: the virt changes will be insulated from the cyborg client method is my point | |
| 18:56:08 | dansmith | Sundar: if I were you I would have one patch that adds the support into the manager, all the build_resources changes to capture the ARQs and pass them to the virt driver, | |
| 18:56:17 | dansmith | Sundar: then a separate patch to implement things for libvirt | |
| 18:56:17 | Sundar | dansmith: Sure, will try to get back ASAP with the changes | |
| 18:56:33 | Sundar | Oh, separate patch for libvirt? | |
| 18:56:40 | dansmith | yes definitely | |
| 18:56:47 | Sundar | That would be 63124 today | |
| 18:56:58 | Sundar | *631245 | |
| 18:57:21 | dansmith | Sundar: so when hyperv people come along, we point them at the libvirt patch and say "implement this part for your driver and you will be good"... separate from the plumbing in compute to wire everything up | |
| 18:58:04 | Sundar | I see, fine with that too | |
| 18:58:06 | dansmith | Sundar: in the compute manager patch, you just assume that any virt driver below you will ignore the ARQs you pass to it, which will be true of libvirt, until the next patch in the series where that becomes untrue for libvirt, but remains true for all the others | |
| 18:59:11 | openstackgerrit | Merged openstack/nova stable/pike: Add regression recreate test for bug 1830747 https://review.opendev.org/663124 | |
| 18:59:11 | openstack | bug 1830747 in OpenStack Compute (nova) pike "Error 500 trying to migrate an instance after wrong request_spec" [High,In progress] https://launchpad.net/bugs/1830747 - Assigned to Matt Riedemann (mriedem) | |
| 18:59:15 | openstackgerrit | Merged openstack/nova stable/pike: Workaround missing RequestSpec.instance_group.uuid https://review.opendev.org/663125 | |
| 18:59:27 | Sundar | dansmith: In the compute manager patch, the signature for libvirt driver's spawn() will have tio change to include the arqs as a parameter. | |
| 18:59:35 | dansmith | Sundar: does this method go away if you pass the stuff from compute manager to virt? https://review.opendev.org/#/c/631245/39/nova/accelerator/cyborg.py | |
| 18:59:49 | dansmith | Sundar: that would leave the virt patch you have as just the libvirt config bits | |
| 19:00:47 | dansmith | Sundar: correct, spawn() will need to take the ARQs, just like it takes network and block device info | |
| 19:01:51 | dansmith | Sundar: https://github.com/openstack/nova/blob/56d3cd7aa7f4d3be01fd2a5c10903fb548c49458/nova/compute/manager.py#L2491-L2499 | |
| 19:02:08 | dansmith | Sundar: just like block and network, you should pull out arqs from resources and pass to spawn | |
| 19:02:26 | dansmith | arguably we could just be passing in resources to spawn to avoid splitting it out, but let's not go down that hole in this set | |
| 19:03:06 | dansmith | Sundar: and since I will have a strong opinion on that later, let me go ahead and say, it should be called: | |
| 19:03:17 | dansmith | accel_info = resources['accel_info'] | |
| 19:03:20 | dansmith | :) | |
| 19:03:28 | Sundar | dansmith: That method would remain, albeit it would move to the compute manager patch. So that the waiting logic can call it once to decide whether to quit early. The virt driver patch 631245 will slim down to just the libvirt driver changes. The change in the signature for virt driver base class and the libvirt driver (to include arqs as a | |
| 19:03:29 | Sundar | parameter) will now be in the compute manager patch. | |
| 19:03:52 | dansmith | Sundar: ah right, forgot that would be the check, so yes, move it thusly | |
| 19:04:01 | Sundar | dansmith: What you said about resources['accel...'] is exactly what I said in the gerrit review :) | |
| 19:04:06 | dansmith | ack | |
| 19:04:35 | dansmith | Sundar: except not the same names | |
| 19:04:46 | dansmith | Sundar: I was giving you a freebie pre -1 on the *name* :) | |
| 19:05:02 | Sundar | What name? | |
| 19:05:13 | dansmith | accel_info instead of accelerator_requests | |
| 19:05:35 | Sundar | I see. To match network_info etc. | |
| 19:05:38 | dansmith | yes | |
| 19:05:49 | dansmith | because I have issues. my therapist and I are working on them. | |
| 19:05:49 | Sundar | Ok, I'm not too hung up on names | |
| 19:05:54 | dansmith | good :) | |
| 19:08:23 | Sundar | sean-k-mooney: still intrigued by your idea for a fake device, block or PCI. Do you have a way to simulate a PCI device? It can be *quite* difficult AFAICS with linux PCI subsystem. | |
| 19:08:56 | dansmith | so I was thinking about something else, like grab the last usb host and pass that through | |
| 19:09:28 | dansmith | Sundar: I would focus on getting the patches back into order, and let sean-k-mooney pull something out of his butt for faking the PCI stuff... :) | |
| 19:10:25 | Sundar | Yup, that's what I plan to do :) but a 'real fake driver' (heck, I'll grab the award for today's oxymoron) would be very useful for the future. | |
| 19:10:26 | dansmith | he pulled off some fancy stuff for the numa live migration stuff, so we should see if he can do it again here :) | |
| 19:10:31 | sean-k-mooney | Sundar: the closest i have come up with is the netdevsim kernel module wich does create sriov capable fake pci device for testing and developing the kernel ebpf code | |
| 19:10:50 | sean-k-mooney | Sundar: how ever i dont think you can actully pass those device to a qemu instace. i have not tried however | |
| 19:11:08 | sean-k-mooney | i did try to use it for sriov testing in the past but i could not get it to work | |
| 19:11:56 | sean-k-mooney | i was able to create the fake device but i could not assing the vfs the pf might have worked but we dont really want to have to compile kernel module in the gate if we can avoid it | |
| 19:12:20 | Sundar | sean-k-mooney: It would be useful to have a libvirt patch where the domain XML for hostdev can have an attribute that indicates 'do not pass this to qemu'. | |
| 19:12:35 | Sundar | That would be useful outside of OpenStack too, I would guess. | |
| 19:12:37 | dansmith | sean-k-mooney: that's why i was thinking pick something on the host we could pass through, like one of those USB hosts | |
| 19:12:56 | dansmith | Sundar: can't imagine the libvirt folks would go for that | |
| 19:12:56 | sean-k-mooney | dansmith: maybe ya | |
| 19:14:11 | sean-k-mooney | there was talk and patchs for adding the abilty to emulate sriov device in qemu | |
| 19:14:27 | sean-k-mooney | if that ever gets merged upstream we might be able to use that | |
| 19:14:42 | sean-k-mooney | but for now it think focusing on getting the patches in order is better | |
| 19:15:06 | sean-k-mooney | if i come up with a way to fake sriov/pci deivces ill let ye know | |
| 19:15:24 | Sundar | We're all agreed on that :). Time for me to get back to work. | |
| 19:16:13 | sean-k-mooney | one thing i have been meaning to test for a while is if i can use a neutron port as a pci device for a guest | |
| 19:16:38 | sean-k-mooney | they dont support vfs put i might be able to do a PF passthough | |
| 19:18:13 | sean-k-mooney | im pretty sure we are missing a few things to make that work however espacally in the upstream ci. | |
| 19:38:52 | openstackgerrit | Eric Fried proposed openstack/nova master: Use Placement 1.34 (string suffixes & mappings) https://review.opendev.org/696418 | |
| 19:38:53 | openstackgerrit | Eric Fried proposed openstack/nova master: WIP: Tie requester_id to RequestGroup suffix https://review.opendev.org/696946 | |
| 19:40:02 | efried | gibi: 696418 ^ now just does the 1.34 cutover, will continue with the rest in subsequent patches. | |
| 19:51:42 | openstackgerrit | Merged openstack/nova master: Process requested_resources in ResourceRequest init https://review.opendev.org/696354 | |
| 20:04:18 | efried | dansmith: is nullable=True (e.g. [1]) made moot by having a default and using obj_set_defaults() in __init__ (e.g. [2])? | |
| 20:04:18 | efried | [1] https://github.com/openstack/nova/blob/f1382651dc3b7b945b69a2af0bc05aa472f26b28/nova/objects/request_spec.py#L1061 | |
| 20:04:18 | efried | [2] https://github.com/openstack/nova/blob/f1382651dc3b7b945b69a2af0bc05aa472f26b28/nova/objects/request_spec.py#L1071 | |
| 20:04:28 | dansmith | no | |
| 20:04:40 | dansmith | efried: nullable=True *only* means "can be set to None" | |
| 20:04:55 | efried | ah fusk, will I *ever* get that right? | |