| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-10-04 | |||
| 13:39:00 | efried | whitelisting? virt driver | |
| 13:39:04 | jaypipes | efried: doing so would probably lead to a lot of dup code. | |
| 13:39:17 | efried | Mapping devices to RPs? virt driver. | |
| 13:39:49 | efried | sahid The only "work in progress" is scribbles on etherpads, which we discussed at the PTG. | |
| 13:40:09 | sahid | efried: yes i was not here, if you can give me the link | |
| 13:40:32 | efried | sahid https://etherpad.openstack.org/p/nova-ptg-queens-generic-device-management | |
| 13:40:49 | efried | sahid It has generally been a drive towards understanding how devices are going to be managed once we go full-bore with placement & resource providers | |
| 13:40:59 | efried | sahid The goal being to get rid of the existing PCI manager code. | |
| 13:41:25 | mriedem | gmann_sleep: doesn't it seem odd that we still have this filtering code when listing instances to be able to filter by metadata and system_metadata? https://github.com/openstack/nova/blob/master/nova/compute/api.py#L2328-L2332 | |
| 13:41:32 | mriedem | i thought that was a 400 in the API now | |
| 13:41:56 | mriedem | https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L182 | |
| 13:42:14 | efried | jaypipes Potentially duplication among the linuxy hypervisors, I suppose. I would still expect the code to ultimately run under the auspices of the virt driver. | |
| 13:42:15 | sahid | efried: no transition phase as suggested jaypipes by adding a update_from_inventory() method to the PciManager? | |
| 13:43:15 | efried | jaypipes So I could see having some shared class above the ComputeDriver base class that provides linuxy impls for devicey methods. | |
| 13:44:15 | efried | sahid Well, the cores have made their position pretty clear: Investment in the existing PCI manager is going to be very limited. | |
| 13:46:19 | efried | sahid That said, I think it may be possible to get very close to what you want just using NRP with traits and careful modeling, which is happening in Queens. | |
| 13:46:44 | efried | sahid Fancy use cases like (anti)affinity won't work yet. | |
| 13:46:49 | jaypipes | efried: yeah, we're gonna need to have some sort of transitionary plan anyway... | |
| 13:47:33 | efried | jaypipes Oh, like sahid is saying with update_from_inventory() - presumably a RT method that peels dev info out of the virt inventory and flushes it back to the PCI manager? | |
| 13:47:54 | jaypipes | efried: chatting with dansmith and bauzas, I'm cool with trying to get single-inventory VGPU support pushed for Queens if we miss nested resource provider targets. That would means no support for multiple GPU types on a single compute node, but would at least get some rudimentary VGPU support | |
| 13:49:08 | dansmith | jaypipes: multiple gpu types can be handled with aggregates until we have richer support, and at least one customer has told me that's fine, FWIW | |
| 13:49:18 | bauzas | efried: I just wanted to clarify how we would translate a specific {'VPGU:1"} request into something very virt-specific | |
| 13:49:18 | jaypipes | k | |
| 13:49:40 | bauzas | heh VGPUs even | |
| 13:49:41 | sahid | it seems that XenServer provides an abstraction which makes easy what you want to achieve | |
| 13:49:48 | sahid | but that does not look reasonable for libvirt | |
| 13:50:05 | efried | bauzas So the only way we're going to translate an allocation to a specific device is if the RP is modeled as representing that specific device. | |
| 13:50:31 | sahid | XenServer is doing the managmenet ofr the devices, libvirt is using the PciManager | |
| 13:50:56 | bauzas | efried: sahid: dansmith: I just feel we need code so we could chat on the details | |
| 13:51:09 | bauzas | reporting the inventory for those resource classes is easy | |
| 13:51:21 | efried | The virt driver will ultimately be responsible for designing that model, maintaining that mapping, and providing the appropriate RPs and inventory to placement (via get_inventory, or update_provider_tree, or whatever it winds up being) | |
| 13:51:25 | dansmith | bauzas: you're asking how the virt driver knows a thing has been requested? | |
| 13:51:44 | bauzas | dansmith: yup, correct | |
| 13:51:57 | dansmith | bauzas: in the simple case it can just look at extra_specs on instance.flavor | |
| 13:52:00 | bauzas | dansmith: jaypipes told me RT looks up the allocation | |
| 13:52:11 | bauzas | dansmith: yeah that was my initial approach | |
| 13:52:17 | dansmith | bauzas: we have a routine that can parse the flavor and give you a merged resource view | |
| 13:52:27 | bauzas | that would be an easy thing then | |
| 13:52:33 | bauzas | okay, I need coding then | |
| 13:52:34 | dansmith | or look at the allocation, yeah, but plumbing that from rt to virt will take a little work | |
| 13:52:49 | efried | The virt driver will be able to see the allocation, no? | |
| 13:52:51 | bauzas | yeah, for a POC, introspecting the flavor seems the quickiest path | |
| 13:52:55 | dansmith | you will need the allocation once we have n-r-p or traits though | |
| 13:53:02 | bauzas | efried: it requires a new interface which we don't have yet | |
| 13:53:02 | mriedem | these -1s from zuul messing up my dashboard is messing up my life | |
| 13:53:10 | dansmith | efried: it could fetch it itself, yeah, but better if it didn't I think | |
| 13:53:30 | bauzas | dansmith: yeah, I'm not a fan of the virt driver calling placement | |
| 13:53:36 | dansmith | bauzas: yeah, a good first step would be figuring out the best way to tell the virt driver about the allocation | |
| 13:53:45 | dansmith | bauzas: yep | |
| 13:53:52 | efried | Talking like something in the Instance object? | |
| 13:53:55 | bauzas | anyway, /me coding then | |
| 13:53:59 | dansmith | efried: no | |
| 13:54:08 | efried | param to spawn? | |
| 13:54:09 | dansmith | efried: maybe just a param in spawn | |
| 13:54:11 | dansmith | yeah | |
| 13:54:13 | efried | ight | |
| 13:54:30 | efried | btw, virt will at some point be calling placement. | |
| 13:54:33 | efried | Not necessarily in spawn | |
| 13:54:45 | bauzas | dansmith: jaypipes was thinking of a specific interface for nested RPs | |
| 13:54:57 | bauzas | dansmith: something like update_my_provider_tree() | |
| 13:54:59 | dansmith | efried: you're saying that because of virt drivers reporting resource? | |
| 13:55:01 | efried | but in init_host, and/or get_inventory, and/or update_provider_tree, whatever - to set up the RPs and whatnot. | |
| 13:55:27 | efried | Yeah, for example, to know whether a RP has been created yet. | |
| 13:55:31 | dansmith | efried: that should be abstracted by the compute manager, not virt calling placement directly | |
| 13:55:32 | dansmith | IMHO | |
| 13:55:33 | dansmith | bauzas: yep makes sense | |
| 13:55:41 | efried | dansmith Yeah, I suppose it could be. | |
| 13:55:54 | bauzas | I second dansmith on not having placement calls from the driver | |
| 13:56:02 | efried | This means virt is always responsible for producing RP UUIDs. | |
| 13:56:07 | dansmith | efried: I think we should shoot for that goal, and if there's some compelling reason to break that rule, then we can discuss it | |
| 13:56:14 | efried | dansmith Dig. | |
| 13:56:17 | bauzas | mriedem: (Zuul, Jenkins) is now the tuple to care | |
| 13:56:24 | jaypipes | dansmith: right. RT constructs the known ProviderTree. passes it to the virt driver's update_provider_tree() method, virt driver adds, removes, changes inventory and traits for resource providers in the tree, RT then saves any of those changes to placement. | |
| 13:56:36 | dansmith | jaypipes: yes, that | |
| 13:56:38 | efried | bauzas What is it you're going off to code now? | |
| 13:57:26 | bauzas | efried: I'll just update libvirt to pass vGPU resources and lookup the flavor extraspecs for plumbing a mdev | |
| 13:57:48 | efried | bauzas Pass vGPU resources from get_inventory? | |
| 13:57:55 | bauzas | correct | |
| 13:58:02 | efried | bauzas and look up flavor extra specs from spawn? | |
| 13:58:11 | bauzas | efried: yup | |
| 13:58:17 | efried | bauzas Cool. sahid ^ | |
| 14:02:28 | sahid | that seems a bit archaic - get_inventory to retourn ResourceClass.GPU and then ? you are going to hack the virt driver to read a flavor in the spawn phase? add a conditon that a vgpu, (which kind?, what numa?) and then update the XML | |
| 14:03:31 | bauzas | that's basically my intent, yes :) | |
| 14:03:54 | dansmith | 460 uses of instance.flavor in the virt drivers today | |
| 14:03:56 | dansmith | not exactly a hack | |
| 14:05:22 | sahid | It is totally a hack and it's going to provide a very basic support | |
| 14:05:53 | dansmith | yep, it's a first step to get us basic support, as stated above | |
| 14:05:53 | sahid | libvirt have a pci device manager, and it's a bad idea to just ignore it | |
| 14:07:00 | sahid | but it's a hack, no need ot RP or anything to provide that basic support | |
| 14:09:49 | openstackgerrit | Rodolfo Alonso Hernandez proposed openstack/os-vif master: Add support for Windows network commands https://review.openstack.org/487405 | |
| 14:13:40 | openstackgerrit | Eric Berglund proposed openstack/nova master: WIP(5): PowerVM driver: ovs vif https://review.openstack.org/422512 | |
| 14:13:51 | openstackgerrit | Rodolfo Alonso Hernandez proposed openstack/os-vif master: Add Port Profile info to VIF objects Linux Bridge plugin https://review.openstack.org/490829 | |
| 14:15:08 | openstackgerrit | Rodolfo Alonso Hernandez proposed openstack/os-vif master: Add VersionedObjectPrintable mixin https://review.openstack.org/493082 | |
| 14:18:47 | openstackgerrit | Takashi NATSUME proposed openstack/nova master: Fix test_get_volume_config method https://review.openstack.org/489467 | |
| 14:20:39 | openstackgerrit | Balazs Gibizer proposed openstack/nova master: Test resource allocation during soft delete https://review.openstack.org/495159 | |
| 14:20:39 | openstackgerrit | Balazs Gibizer proposed openstack/nova master: factor out compute service start in ServerMovingTest https://review.openstack.org/503037 | |
| 14:23:10 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Remove unused get_all_instance_*metadata methods https://review.openstack.org/508299 | |
| 14:23:11 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Stop joining on system_metadata when listing instances https://review.openstack.org/508335 | |
| 14:23:11 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Remove old compat code from servers ViewBuilder._get_metadata https://review.openstack.org/508326 | |
| 14:23:12 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Remove system_metadata loading in Instance._load_flavor https://review.openstack.org/508357 | |