On Wed, Feb 9, 2022 at 3:01 PM Ilya Maximets <[email protected]> wrote: > >> Why this process can't be lockless? > >> If we have to lock the device, maybe we can do both submission > >> and completion from the thread that polls corresponding Rx queue? > >> Tx threads may enqueue mbufs to some lockless ring inside the > >> rte_vhost_enqueue_burst. Rx thread may dequeue them and submit > >> jobs to dma device and check completions. No locks required. > >> > > > > This still means that Rx polling has to be taking place for OVS > > Tx to the device to operate. > > > > Isn't that a new dependency on OVS being pushed from the driver? and > > wouldn't it rule out OVS being able to switch to an interrupt mode, or > > reduce polling in the future if there was no/low packets to Rx. > > > > Of course, they could be mutually exclusive features that might have an > > opt-in, especially seen as one is performance related and the other is > > about power saving. > > AFAICT, vhost library doesn't handle interrupts, so OVS will need to > implement them, i.e. create private interrupt handle and register > all the kickfd descriptors there. At this point, I think, we might > as well create a second private interrupt handle that will listen > on fds that Tx thread will kick every time after successful enqueue > if dma enqueue is enabled. This all can happen solely in OVS and we > may even have a different wakeup mechanism since we're not bound to > use DPDK interrupts, which are just epolls anyway.
I agree, this is not a blocker for an interrupt mode. Just a note, that the vhost library already provides kickfd as part of the vring structure. A api is available to request notifications from the guest on a specific vring. (And no experimental API for this!) About the DPDK interrupt framework, OVS does not need the epoll stuff even for "normal" DPDK devices Rx interrupts. eventfds from vfio-pci / other kmods can already be retrieved from existing ethdev API without using DPDK interrupt thread/framework. > > In any case, some extra engineering will be required to support vhost > rx interrupts even without dma. I have a PoC in my branches. I'll send a RFC on this topic, after 22.03-rc1/2. > > Also, is dma engine capable of generating interrupts? Does DPDK API > support that anyhow? Cc: Bruce who may know. At least, I see nothing in current dmadev API. -- David Marchand _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
