Friday, 2026-09-11

bogdando[m]hi, WDYT folks on resurrecting https://specs.openstack.org/openstack/cyborg-specs/specs/2023.1/approved/attribute-api-support.html and applying that design for phys_net of deployables instead of attributing particular semanthics to attach handles in generic drivers? context is https://review.opendev.org/c/openstack/cyborg-specs/+/100508908:53
sean-k-mooneywe will likely reviit but not on the deployable08:54
sean-k-mooneythe attibutes shoudl have been on the device instead08:54
bogdando[m]well, device is PF, and for smart nic, its more makes sense to attribute one or a group of its VFs (deployables)08:54
sean-k-mooneybogdando[m]: but to be clear we will asy want to have a config driven approch as a primary approch08:54
sean-k-mooneywe may add some api driven suprpot later08:55
sean-k-mooneybut its really not a good ux at scale08:55
sean-k-mooneydevice is not the pf 08:55
sean-k-mooneytdevice is the assiable thing it can be the pf or vf08:55
sean-k-mooneya deployable is a pool of allcoatabel devices08:56
sean-k-mooneycurrently resouce classes for palcement are tracked via the atibutes api08:56
sean-k-mooneythat shoudl be on the device08:56
sean-k-mooneybecuase each deployable corresponds to a placment resouce provider08:56
bogdando[m]ack, it seems I missread "A device has a management interface, whose address is the control path identifier: for SR-IOV devices, this is usually the PCI Physical Function (PF)" - PF is indeed control managmenent interface of a device, not the device08:57
sean-k-mooneyand we want to be able to have 1 placement resouce provier with inventoreis of diffent resouce class08:57
bogdando[m]yes, I like the idea that a deployable is a pool of VFs08:58
sean-k-mooneyto be clear i dont think that hte atibute api as orgianly specified is the right shap and the impelation that was done didnt follow the spec and is even worse08:58
bogdando[m]but I am not sure about PFs VFs boundaries as you suggested08:58
bogdando[m]grouping devices or PFs seems a bit another layer of abstraction than VFs affinity08:59
sean-k-mooneyplacement is not deisign to have 100s of rps for a given host09:00
sean-k-mooneyit casue sever performance probelms and a singel nic can have 100s of VFs09:00
sean-k-mooneywe group VFs by pf in nova today09:00
bogdando[m]I see, that makes sense to not break the contracts established like each deployable is a placement rp09:01
sean-k-mooneythere are 3 related thigns09:01
sean-k-mooneydevices deployables and attachmet handels09:01
sean-k-mooneythere is a 1:1 relathiship between devices adn attachment handels09:02
sean-k-mooneyand a many:1 relasthip between device and deployable09:02
sean-k-mooneyor attachmetn_handel and deployabel depending on how you look at it09:02
bogdando[m]hm, my understanding was 1:many for devices and deployables and 1:many for deployables and ah09:03
sean-k-mooneyno09:03
bogdando[m]it is based on https://specs.openstack.org/openstack/cyborg-specs/specs/train/implemented/cyborg-nova-placement.html#background09:03
bogdando[m]"A Cyborg device has one or more components named deployables, each of which contains one or more accelerators"09:04
bogdando[m]so accelerators to handles is 1:1, right09:05
bogdando[m]everyting else seems to be 1:many :)09:05
sean-k-mooney so in the db they are not corratled at all directly09:06
bogdando[m]if there is some hidden knowledge based on placement desing, do we have a better place to read about it?09:06
sean-k-mooneynot really and the curen implation is both incodsitend and not scalable09:07
sean-k-mooneyyou really need to look at the code and already know hwo placment was designe to be used09:07
bogdando[m]I see, that comlpicates design review on shaky grounds09:07
sean-k-mooneyso the actuall relation ship is as follow09:08
sean-k-mooneydevice <> contoplathID is 1:1  contolpath id <> attachment handel is 1:109:08
sean-k-mooneyattachment handel <> deployable is many to 109:09
sean-k-mooneythe attachment handel is actullth theing that maps contoplath ides to deployables09:09
bogdando[m]would be nice to reflect that in dev docs09:09
sean-k-mooneyand devices are assocated transitivly09:09
sean-k-mooneybogdando[m]: its on my todo list09:10
bogdando[m]ack, thanks for explaining!09:10
sean-k-mooneybut you can see this by looking at the db schema today https://github.com/openstack/cyborg/blob/master/cyborg/db/sqlalchemy/models.py#L78-L21009:10
sean-k-mooneythe problem iwth the atibutes api is it shoudl have been again the device or optionaly the device or deployable09:11
bogdando[m]looking into code may confuse reader because old implementation paths not strictly following old design specs09:11
sean-k-mooneythis is consitent with the spec09:11
sean-k-mooneybut you need more context then is captured there09:11
sean-k-mooneyor rather ti coudl have done with better diagrams to make it very clear09:12
sean-k-mooneyhttps://specs.openstack.org/openstack/cyborg-specs/specs/train/implemented/cyborg-nova-placement.html#background does not show it clearly09:12
bogdando[m]that comment about code was mostly for "to be clear i dont think that hte atibute api as orgianly specified is the right shap and the impelation that was done didnt follow the spec and is even worse"09:12
sean-k-mooneyah well yes the implementation didnt follwo the spec09:13
sean-k-mooneythe spec was reasonabel the implelatin less so09:13
sean-k-mooneyi was effectivly planing to remvoe the top level /atibute api because that was neer approved and doesnt really work well09:14
sean-k-mooneyhttps://specs.openstack.org/openstack/cyborg-specs/specs/2023.2/implemented/attribute-api-support.html#rest-api-impact09:15
sean-k-mooneythe speci specificly said `/v2/deployable/{uuid}/attribute`09:15
sean-k-mooneywe shoudl have atibute son both deployabels and devices in my opion09:15
sean-k-mooneybut the impletion added /v2/attributes09:16
sean-k-mooneyhttps://docs.openstack.org/api-ref/accelerator/#list-attributes09:16
sean-k-mooneythe impltion also does not work properly and was never properly completed09:16
bogdando[m]attach handles to deployables relation that you explained seems strictly following the original design link I provided above, and matches 1 to many / many to one - depending on which goes first. The difference seems to be more for controlpaths, devices and accelearators09:17
sean-k-mooneymy prefence is to add /v2/deployable/{uuid}/attribute and /v2/device/{uuid}/attribute and delete /attibute in a new microverison09:17
sean-k-mooneynot quite i think that is still following the sepc but again i was involved in the spec design and over all nova/placment design in person 09:19
sean-k-mooneyso i have more context then may have been capatured09:19
bogdando[m]back to the subject, it seems we might want to postpone the spec which suggests using phys_net in attach handles - until we have new attributes design implemented?09:22
bogdando[m]to avoid double migration paths09:22
sean-k-mooneyno09:24
sean-k-mooneythe phsnet is already in the attachment handel09:24
bogdando[m]ah09:25
sean-k-mooneywhat that spec is doign is propsong we port the logic out of the intel only nic driver09:25
sean-k-mooneyinto the generic pci driver09:25
sean-k-mooneyso it wokrs with any nic09:25
bogdando[m]I see. Well my concern remains - phys net likely an attribute and needs another implementation09:26
sean-k-mooneyit may be at some point09:27
sean-k-mooneybut it shoudl be set via config09:27
sean-k-mooneyas the priamry way to configure it09:27
sean-k-mooneynova never uses the atibute api and never will09:27
sean-k-mooneyit uses only the arq api and device profile apis09:28
sean-k-mooneythe attachment handel is the summeraisation of the information required to attach a device to a workload (vm or container)09:28
sean-k-mooneybogdando[m]: you proably should read https://specs.openstack.org/openstack/nova-specs/specs/xena/implemented/sriov-smartnic-support.html09:29
bogdando[m]also it looks like having phys net in ah of legacy intel driver is OKish, while having a fresh started geneeric pci driver design clean09:30
sean-k-mooneywhen we implmented suprpot for cyborg managed neutron ports in nova in xena we added code in nova that checks teh phsynet09:30
sean-k-mooneybogdando[m]: the attachmetn handle is the corect place for it09:31
sean-k-mooneybogdando[m]: nova should never use the attibutes api ever09:31
bogdando[m]that is a nice reference to read, thank you. I understood that there is another established contract for nova to cyborg and neutron interaction09:32
bogdando[m]albeit do you think that adding network specific attributes, then for example gpu specific ones, and maybe later one more for nvmes or fpgas, still keeps that driver attach handle generic?09:33
bogdando[m]am not trying to make a revolution here though :)09:35
sean-k-mooneyfirst of all yes, but secondly the only things that will be specifid via that interface are thigns that change how the device is assocated with the guest 09:35
sean-k-mooneybogdando[m]: currently your propsoal are misaligned with the driction i woudl liek to take the proejct. im open ot dicussion but i do not want to have nova need to know more about cybrog then it already does in general09:36
sean-k-mooneynov ainteract with only 2 api, the device profile api to get the resouce request09:36
sean-k-mooneyand the the acclerator request api to bind allcoated devices09:36
bogdando[m]I am ok with that just maybe renaming generic driver to something else then09:37
sean-k-mooneythe attchmeth handel is part of the repocne of the arq bind09:37
bogdando[m]like universal driver09:37
sean-k-mooneythe term generic is chooen specifly to be vendor agnistic09:37
sean-k-mooneywe have a pci driver, and are addning an nvme dirver09:37
sean-k-mooneythey arem named after the bus tehy manage09:38
sean-k-mooneyi.e. the mdev drvier that we are creating09:38
sean-k-mooneymy hope is to eventually remove most of the vendor specific drivers09:38
bogdando[m]yes, I also support that09:38
sean-k-mooneyand only have the generic driver unless there is a stong reaodn ot keep a vendor driver09:38
sean-k-mooneyso if we say wanted ot supprot USB passthough in the future we woudl add a usb driver that can work with any usb device instead of a logitech driver09:39
sean-k-mooneysame fr cxl, block devices ectra.09:40
sean-k-mooneythe reason nvme is not part fo the generic pci deriver is because its stateful and need specific cleaning09:40
bogdando[m]just as a thought experiment, what if attributes api to be added for accelerators api to which nova already interacts09:40
sean-k-mooneyit already is kidn of there in a form more useful to nova09:41
sean-k-mooneybogdando[m]: the only thing that this is used for today is addign an removing traits09:41
sean-k-mooneythat it09:41
sean-k-mooneythe device profile already contians groups of resoucelass and trait requests09:42
sean-k-mooneythe atibute api is not inteded as a way to do devifce configuration09:42
sean-k-mooneyits a metadata store09:42
sean-k-mooneyi do not want to extend it to do configuration if we do that it will be iva a diffent api09:43
sean-k-mooneybogdando[m]: form the api ref "A attribute represents the trait of a physical card like FPGA or GPU."09:43
sean-k-mooneyits litally just a proxy api to add traits to the placement resouce provider09:43
sean-k-mooneyits not needed today because you can do that directly via the placment api09:44
sean-k-mooneythis is why i said i dont think its fit for porpus today and i woudl prefer to entirly replace it in the future09:45
bogdando[m]attributes api looks redundant, yes, although mentions non-placement/nova use cases09:47
sean-k-mooneyit would acked as a geneitc metatdata store09:48
sean-k-mooneybut https://bugs.launchpad.net/openstack-cyborg/+bug/2158996 prevents it form being used at all today09:48
sean-k-mooneythe implemtion today requries you to know the internal database primary key which is never returend form teh api09:49
bogdando[m]"A device may have components, such as flash memory or BMC, which are not of relevance to Nova or Placement. Those components may have attributes"09:49
sean-k-mooneywe do not have any usecase that require that currnetly09:50
sean-k-mooneyto be clear if i was a core when this was propsoed i would have been -2 on the spec based on its curent content09:51
bogdando[m]actually that "not of Nova relevance" answers to my propoal already - phys_net is in relevance, hence not a fit for that api09:52
sean-k-mooneyi can see usecase for device metadta or config apis in the future but that diffent09:53
sean-k-mooneymelwitt: ok i finially finsihed reviewign both your spec and left comments inline16:27
sean-k-mooneydirectionally both are a good start but between teh 2 i left 60 ish comments so maybe wait till monday to read them :)16:28
melwittsean-k-mooney: 60?? lol ok. thank you for reviewing :)16:57
sean-k-mooneymelwitt: some of them may be duplicative17:06
sean-k-mooneyi went seciton by seciton and later noteice that soem eiarer coment were paticly adressed17:06
melwittah nice I got some review from bogdando[m] too. thanks both17:06
melwittah k17:07
sean-k-mooneyi started early today and it now 18:00 so im going to finsh nowish17:09
sean-k-mooneyif you want to chat about any of the feed back on a call or somehting we can grab some time next week17:09
melwittsounds good :)17:09
sean-k-mooneybut we can continue to dicuss on gerrit too17:09
opendevreviewTakashi Kajinami proposed openstack/cyborg-tempest-plugin master: Add stable/2026.2 job  https://review.opendev.org/c/openstack/cyborg-tempest-plugin/+/100531517:16

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