Thursday, 2025-03-13

bauzasgentle reminder that we have a couple of open patches that we need to merge before RC1 : https://etherpad.opendev.org/p/nova-epoxy-rc-potential10:47
bauzasalso, I'll be off today after noon CET (ie. in 15 mins)10:47
opendevreviewribaudr proposed openstack/nova master: FUP improve and add integration tests for PCI SR-IOV servers  https://review.opendev.org/c/openstack/nova/+/94410612:11
opendevreviewribaudr proposed openstack/nova master: FUP Add a warning to make non-explicit live migration request debugging easier  https://review.opendev.org/c/openstack/nova/+/94413312:11
opendevreviewribaudr proposed openstack/nova master: FUP Update pci-passthrough and virtual-gpu documentation  https://review.opendev.org/c/openstack/nova/+/94415312:11
opendevreviewMerged openstack/nova master: doc: mark the maximum microversion for 2025.1 Epoxy  https://review.opendev.org/c/openstack/nova/+/94394812:32
opendevreviewBalazs Gibizer proposed openstack/nova master: Reproduce bug/2098496  https://review.opendev.org/c/openstack/nova/+/94167313:21
opendevreviewDan Smith proposed openstack/nova-specs master: Add one-time-use-devices spec  https://review.opendev.org/c/openstack/nova-specs/+/94348613:37
dansmithbauzas: typo fix, if you could ^13:37
dansmithmelwitt: I still think your +1 on that is useful if you want to re-add it (and I don't blame you, this is trial-by-PCI fire for me)13:38
opendevreviewDan Smith proposed openstack/nova master: Add one-time-use devices docs and reno  https://review.opendev.org/c/openstack/nova/+/94426214:29
opendevreviewBalazs Gibizer proposed openstack/nova master: Reproduce bug/2098496  https://review.opendev.org/c/openstack/nova/+/94167315:29
opendevreviewBalazs Gibizer proposed openstack/nova master: Ignore metadata tags in pci/stats _find_pool logic  https://review.opendev.org/c/openstack/nova/+/94427715:29
gibidansmith: just an FYI. This ^^ is the bugfix in the PCI in Placement codepath that fixes double allocations due to pool breakup15:31
dansmithum, you say that like I should have context on that issue.. did we discuss this before?15:31
gibiyepp in our last sprint planning downstream ;)15:32
gibiyou were interested in reviewing it15:32
gibithe main issue is that if you have like 2 VFs per a single PF15:32
dansmithokay I shall refresh myself :D15:32
gibiand boot a VM requesting 1 VF, then delete the VM, and boot again the second VM will get 2 VFs instead of one15:33
dansmithoh right right sorry15:33
gibithe way the pci stats device pooling interacts with the placement driven PCI allocation leads some broken assumptions15:34
gibicausing that the two VFs are broken up into two pools but both refer to the same placement RP 15:34
gibiwhile the other side of the code assumes that devices from a same RP are always in the same pool15:35
dansmithI totally remember the conversation now, yep15:35
gibinow both side of the code is improved. i) we avoid breaking up the pool ii) even if the pool is broken up in the future the other side of the code will be more graceful15:36
gibiand not just allocate the same amount from each pool15:36
dansmithokay I skimmed the repro thing.. I need to go learn about the pooling as I have a big gap there.. I'm also surprised this affects placement, but I guess because of some healing15:45
dansmithbut the "doesn't end up like we started" part of that makes sense of course15:45
sean-k-mooneythe pooling of the pci devices?15:46
gibisean-k-mooney: yepp15:46
gibidansmith: exactly I also think it affects placement due to healing, I will assert that in the repro..15:47
sean-k-mooneynova pci tracker kid of wors like placment but before placement was a thing. we summerised the "invetories" of devices into pools and that what we expose to the schduler15:47
sean-k-mooneyrather then all the devices on each host 15:47
dansmithI assume the pools are because of numa nodes or something?15:47
sean-k-mooneynot exactly15:48
sean-k-mooneythey are partly related ot that15:48
sean-k-mooneybtu they can be splcit on other thign liek neutron phsynet15:48
gibior rp_uui :)15:49
gibirp_uuid15:49
sean-k-mooneyya that was grafted on after the fact for pci in placement15:49
gibidansmith: (confirmed locally that indeed the healing part breaks the placement view)15:49
sean-k-mooneybefore a pool of VFs (think inventory of vfs) was group by the vendor id and product id, and i think parent and or phsynet?15:50
dansmithbut.. is there a pool object somewhere? seems like maybe they're just generated on the fly when we go to process a request?15:51
sean-k-mooneyyes15:51
sean-k-mooneyits stored in the comptue node table15:51
sean-k-mooneythat where the schdluer gets them form to add to the host state object15:51
dansmithoh yeah I see15:52
dansmithbut this pci/stats thing (which seems not very related to stats) defines Pool as a dict15:52
sean-k-mooneyno its an ovo15:53
sean-k-mooneyhttps://github.com/openstack/nova/blob/master/nova/objects/pci_device_pool.py15:53
dansmithI see that15:53
sean-k-mooneywell its stored as a json blob if that what your asking15:53
dansmithhttps://review.opendev.org/c/openstack/nova/+/944277/1/nova/pci/stats.py line 3915:53
dansmith^ is what I'm talking about15:53
sean-k-mooneywe convert it here https://github.com/openstack/nova/blob/master/nova/objects/compute_node.py#L321-L32615:54
sean-k-mooneywhich is called in save on the compute node here https://github.com/openstack/nova/blob/master/nova/objects/compute_node.py#L36015:55
gibistats pool concept works with dict yes, the DB model works with jsonified ovos15:55
dansmithand the PciDeviceStats seems to call a  PciDevicePoolList "stats"15:55
sean-k-mooney ya15:56
dansmithwhich it then converts to a dict which it calls "pools"15:56
dansmithwtf?15:56
sean-k-mooneythe nameing is shall we say in consitent15:56
dansmithI was going to pick a different adjective.. possibly an emoji15:56
sean-k-mooneythe db colume is called pci_stats15:57
sean-k-mooneyhttps://github.com/openstack/nova/blob/master/nova/db/main/models.py#L227-L22915:57
dansmithsmh15:57
sean-k-mooneythe stats name came for the fact its a summary15:57
sean-k-mooneyi.e. a count and some metadata15:58
dansmithso PciDevicePool has a product and vendor but not an address,15:58
sean-k-mooneyrather then each device15:58
sean-k-mooneycorrect15:58
dansmithso I assume we take the alias map and generate all the PciDevicePool objects we need with the appropriate count, even if count=1 because they just specified one address?15:58
sean-k-mooneyits a count of how many of that type of device (product/vendor) are avaible15:58
sean-k-mooneyyes15:58
sean-k-mooneyif the pci dev spec only allows 1 device you get a pool or 115:59
sean-k-mooney*of 115:59
dansmiththis code is, I think, a very nice concrete example of why I normally just gloss over anytime PCI stuff comes up and try to ignore it :)15:59
dansmithack15:59
sean-k-mooneyi actully like this code partly becasue to me it very placement like15:59
dansmithdoes the grouping per physnet, per rp, etc, etc happen in compute node so we report the proper splitting to scheduler?16:00
sean-k-mooneywell conceptually16:00
sean-k-mooneydansmith: yes it does16:00
dansmithsean-k-mooney: I mean the name confusion and the converting everything to mis-named dicts to work on :)16:00
sean-k-mooneyits part of the resouce summary view we create as a perodic16:00
dansmithokay makes sense16:00
sean-k-mooneydansmith: some of this code i think predate when you added nova objects16:01
sean-k-mooneyso ya the conventiosn were not as well established16:01
dansmithsean-k-mooney: I don't think it predates objects, but I know it's old16:02
sean-k-mooneyperhasp it was 2012 ish16:02
sean-k-mooneynot imporant now i ugess16:03
gibianother "complication" that pool filtering happens twice by this code, once from the PCIPassthroughFilter and once from the pci claim on the compute. But it happens a bit differently as the former only handles counts, while the latter handles real device addresses to allocat16:03
sean-k-mooneyit actully happens 3 times16:04
gibitrue, twice in the scheduler16:04
sean-k-mooneyit happens in both the pci passthoguh filter and again in the numa topology filter16:05
sean-k-mooneythe pci filter really just checks that there are enough devices of the correct type16:06
sean-k-mooneythe numa filter need to also take into acocunt the numa constraits16:06
opendevreviewDan Smith proposed openstack/nova master: Support "one-time-use" PCI devices  https://review.opendev.org/c/openstack/nova/+/94381617:30
opendevreviewDan Smith proposed openstack/nova master: Add one-time-use devices docs and reno  https://review.opendev.org/c/openstack/nova/+/94426217:30
opendevreviewBalazs Gibizer proposed openstack/nova master: Reproduce bug/2098496  https://review.opendev.org/c/openstack/nova/+/94167317:38
opendevreviewBalazs Gibizer proposed openstack/nova master: Ignore metadata tags in pci/stats _find_pool logic  https://review.opendev.org/c/openstack/nova/+/94427717:38
*** __ministry is now known as Guest1126318:06
atmarkhello, does ceph driver for nova support rbd namespaces?19:59

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!