Earlier  
Posted Nick Remark
#openstack-nova - 2025-11-12
13:29:38 gibi `with threading.Lock()` is wrong while `with Guard(names)` is the correct way is non intuitive
13:29:49 gibi hence we need documentation
13:29:59 sean-k-mooney right
13:30:03 sean-k-mooney that the delta in usage
13:30:26 sean-k-mooney i need to push a patch to cyborg and venos to fix a requriement issue that i just fixed in watcher
13:30:38 sean-k-mooney but when im done ill update the patch again. thanks for reviewing
13:31:27 gibi cool thanks
14:21:53 opendevreview Vasyl Saienko proposed openstack/nova master: Set vnic model and queue for VDPA https://review.opendev.org/c/openstack/nova/+/966855
14:39:42 opendevreview Vasyl Saienko proposed openstack/nova master: Set vnic model and queue for VDPA https://review.opendev.org/c/openstack/nova/+/966855
14:40:50 vsaienko sean-k-mooney: I found that queues parameter is not passed to domain xml interface section in case of VDPA, this was a reason of slow iperf test. I've reported a bug https://bugs.launchpad.net/nova/+bug/2131150 and created a fix https://gerrit.mcp.mirantis.com/c/packaging/sources/nova/+/247944 please add to your review queue
14:41:06 sean-k-mooney vsaienko: yep i just -1 your patch
14:41:17 sean-k-mooney vsaienko: this si not a bug
14:41:28 sean-k-mooney it was not possibel to use multi queu whne we added vdpa supprot
14:41:37 sean-k-mooney and it was not implemented intentionally as a result
14:42:03 vsaienko hm... but now its possible
14:42:09 sean-k-mooney so 1 this is a new feature, two if we are got supprot this we will need much more testing the what is in the patch and mroe docs as well
14:42:28 sean-k-mooney vsaienko: rigth so as this is a feature requst it woudl normally need a bluefpirnt or a spec
14:42:53 sean-k-mooney we coudl do it under a bug in very limited cases but its not actully a bug from an upstream point of view
14:42:54 vsaienko ack
14:43:12 sean-k-mooney the main gaps are when did this supprot land in the kernel and qemu
14:43:37 sean-k-mooney we need to document that both in a release note and in the vdpa docs
14:43:48 sean-k-mooney depending o nthe qemu veriosn we may also need to add a version check
14:44:51 sean-k-mooney vsaienko: have you tested packed ring format ?
14:45:20 sean-k-mooney vsaienko: one of the open quetion too
14:45:37 sean-k-mooney is what happen if you have more cpu then the VF that backs the vdpa device supprot in hardware queue
14:46:09 sean-k-mooney i.e. is it ok for the number of queue we pass to qemu to exceed or even not match exactly the number of queue supproted by the hardware
14:48:15 sean-k-mooney vsaienko: if we can answer those quetions and ensure there is no upgrade impact when live migrating between hsot with and without this supprot we may be fine to proceed with a specless bluepritn but those quetions are why this woudl normally require a spec
14:49:38 sean-k-mooney for example it is poosble to set the queue for each vdpa device when they are created https://github.com/os-net-config/os-net-config/commit/384f46f8e0dfb847ab543e82f8cd08f5065edceb#diff-f43ec4c1cd48d8d241917be63e57e70516ef2bbba6e9ba786ce2ad5f1a92ca7dR628-R642
14:50:01 sean-k-mooney now we dont offically suprpot that in nova but we also dont not supprot it
14:50:36 sean-k-mooney in the same way the number of quese for a sriov vf is determiend by how you allocate teh vf
14:51:20 sean-k-mooney that is howe it work today for vdpa as well so we need to make sure we dont break that flow if you dont enabel multi queu vis teh flavor.
14:52:31 sean-k-mooney vsaienko: sorry that a bit of an info dump but you can see why this is non trivial to do corectly and why the documenation of this really matters
14:53:10 vsaienko I haven't check packed ring format
14:53:51 vsaienko is what happen if you have more cpu then the VF that backs the vdpa device supprot in hardware queue - probably this is always a case when we have no multiqueue, VM has always more CPU and queues.
14:53:58 sean-k-mooney ack you change enabls opting in to that
14:54:36 sean-k-mooney vsaienko: in nova we set the queu count equal to the number of cpus when you enabel multi queue
14:54:55 sean-k-mooney so the question is fi the vdpa device only supprot 4 queue and you set it to 16 in qemu/libvirt what happens
14:55:14 vsaienko if the queue count in xml is higher than on VDPA device VM will see number that is configured on vdpa side
14:55:21 vsaienko I checked this
14:55:59 sean-k-mooney ack so we woudl need to 1 agree thats ok, it shoudl be and 2 docuemnt that so OPs are not surpised by that
14:56:45 sean-k-mooney we have a config option to clamp the number of queue so it is already posibel today for the vcpu count and queu count to be diffent even with muliqueueu enebled
14:57:29 sean-k-mooney the reason i asked about packed form at is you can now set it here https://review.opendev.org/c/openstack/nova/+/966855/2/nova/virt/libvirt/vif.py#206
14:58:19 sean-k-mooney by the way did you intenilaly remove this https://review.opendev.org/c/openstack/nova/+/966855/1/nova/virt/libvirt/config.py form your v2?
15:06:51 vsaienko I remove because driver_name is set not to viritio there, and that config.py change is not needed
15:07:20 sean-k-mooney ack
15:10:40 sean-k-mooney vsaienko: so it looks like the libviert supprot was added by https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/D5QUZT2ZCUKF2526EOLGCB5JWCHHTIRV/?sort=thread and qemu by https://patchew.org/QEMU/20210903091031.47303-1-jasowang@redhat.com/
15:13:02 sean-k-mooney https://github.com/qemu/qemu/commit/402378407dbdce79ce745a13f5c84815f929cfdd
15:13:24 sean-k-mooney so that is qemu v6.2.0 and later
15:14:06 vsaienko yes, looks like its supported now
15:14:49 vsaienko and need to check mtu, it seems we need to set it on xml as well
15:15:03 vsaienko because right now I can't use more than 1500 inside guest
15:15:16 sean-k-mooney we do suport settign the mtu i think
15:15:29 sean-k-mooney alhtogh that is one fo the thing that will conflict with the vdpa tool
15:16:18 sean-k-mooney our min qemu is currently 6.2.0 https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L221
15:16:28 sean-k-mooney so we dont have to check if that supprot vdpa multi queue
15:16:46 sean-k-mooney but we do have to confirm whne the libvirt supprot actully hiped and if its in 8.0.0
15:17:53 vsaienko libvirt change is in 8x version https://bugzilla.redhat.com/show_bug.cgi?id=2024406
15:18:12 sean-k-mooney ya i was looking at that but that 8.2.0
15:19:38 vsaienko we do suport settign the mtu i think - does it mean that we can't use jumboframes with vdpa?
15:20:42 vsaienko on 8 libvirt indeed setting mtu for vdpa is not possible https://paste.openstack.org/show/bi1VqvW3ScWE5obNpaRu/
15:20:45 sean-k-mooney so the mtu will only be set if the mtu on the neutorn netowrk is not 1500
15:21:10 sean-k-mooney i tought https://issues.redhat.com/browse/RHEL-7298 refence both mac and mtu but apprently not
15:22:11 vsaienko yes they closed https://bugzilla.redhat.com/show_bug.cgi?id=2057748 as duplicate but forgot to implement?
15:22:36 vsaienko on nova side mtu is not configured for vdpa device at all
15:22:50 vsaienko even when neutron network has > 1500
15:22:51 sean-k-mooney ack the its beacuse of that orgial limiation
15:23:12 sean-k-mooney right so i dont know if that was also fixed in libvirt/qemu or not
15:25:29 sean-k-mooney vsaienko: so ya https://github.com/libvirt/libvirt/commit/a5e659f071ae5f5fc9aadb46ad7c31736425f8cf
15:25:42 sean-k-mooney libvirt supprot for mutlqueue came in 8.2.0
15:26:04 sean-k-mooney that means we need to either rais our min version to libvirt 10 which is declared as or next min version
15:26:24 sean-k-mooney or you woudl have to support libvirt 8.0.0 by checkign the local version before enabling it
15:26:54 sean-k-mooney bumping the min version is the better chocies btu mroe work
15:27:18 sean-k-mooney we now know the minium requiremts at lesat qemu:6.2.0 and libvirt:8.2.0
15:27:37 sean-k-mooney that woudl need to be captured in the release notes
15:27:52 vsaienko ack
15:29:02 vsaienko do we need additional check for libvirt version, because right now min libvirt is 8.0.0 and it is supported starting from 8.2.0
15:29:34 sean-k-mooney yep i sasid that while you disconencted
15:29:51 vsaienko ack
15:29:57 sean-k-mooney we either need to supprot 8.0.0 via a version check ro bump our min version
15:30:06 sean-k-mooney whcih we can also do this cycle
15:30:31 sean-k-mooney its a littel more work but we have 1 or 2 feature that it woudl simplfy
15:30:34 bauzas sean-k-mooney: gibi: I can join the eventlet meeting but honestly I don't have the context
15:34:17 vsaienko should I add limitations section to and add mtu limitation here? https://docs.openstack.org/nova/latest/admin/vdpa.html
15:39:43 sean-k-mooney https://bugs.launchpad.net/nova/+bug/2119114
16:58:01 gibi sean-k-mooney: dansmith: bauzas: Why does it make sense to use a named lock instance in the provide tree? https://github.com/openstack/nova/blob/b7d50570c7a79a38b0db6476ccb3c662b237f69b/nova/compute/provider_tree.py#L252 It was there from the beginning added by Jay but it does not make sense to me. This means that any instances of the ProviderTree class will share the same named lock instead of have
16:58:07 gibi its own lock.
16:59:12 dansmith the providertree is always for a single compute provider root in placement (per process) right?
17:00:16 gibi we are deep.copying ProviderTree objects around within the same process
17:00:34 dansmith right but they represent the same provider (tree) in placement right?
17:00:38 gibi but a single ProviderTree represents a single compute
17:01:21 gibi hm
17:01:23 gibi maybe ironic
17:01:31 gibi working with multiple nodes per compute service
17:01:56 gibi has multiple trees one for each node
17:02:39 gibi the ProviderTree class allows multiplre roots for some reason :/
17:04:11 bauzas yeah I remember sometimes before we said we could have multiple roots
17:04:19 bauzas at least jay said it :p
17:04:59 bauzas I can't unfortunately remember the usecase where we could have multiple roots per compute
17:05:17 bauzas probably shared storage or something like that
17:06:22 gibi OK multiple roots is because the a single ProviderTree will have all the root providers that are connected to our compute root via placement aggregates

Earlier   Later