Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RX interrupt support in the DPDK ENA PMD #168

Closed
mhawari opened this issue Mar 3, 2021 · 23 comments
Closed

RX interrupt support in the DPDK ENA PMD #168

mhawari opened this issue Mar 3, 2021 · 23 comments

Comments

@mhawari
Copy link

mhawari commented Mar 3, 2021

Hi,

I noted that the functions rx_queue_intr_enable and rx_queue_intr_disable were not implemented in ena_dev_ops. This means that the ENA PMD can't be used in interrupt mode, contrary to other PMDs. Are there any plan to implement RX interrupt support in the near future?

Thanks and best regards
Mohammed

@I-gor-C
Copy link
Contributor

I-gor-C commented Mar 3, 2021

Hi Mohammed,

Let me check this and get back to you

@I-gor-C
Copy link
Contributor

I-gor-C commented Mar 3, 2021

@mhawari Interrupts are usually not used with PMDs because of DPDK's general concept to use polling mode. Could you please provide some details about your usecase?

@mhawari
Copy link
Author

mhawari commented Mar 3, 2021

Thanks for the quick answer @I-gor-C ! Here are some details. Interrupt mode for ENA is extremely useful to the Calico-VPP project [1]. It relies on VPP [2] to provide a user-space, fast data plane to Calico. When deployed in AWS, VPP have access to the underlying ENA either by using DPDK or AF_XDP, in polling or interrupt mode. DPDK provides better performance than AF_XDP for a lot of use cases, because it supports TSO, while AF_XDP does not. Interrupt mode support with DPDK would considerably improve resource-efficiency in a lot of scenarios, as we wouldn't need to dedicate CPU cores to busy polling anymore. This topic is covered with more details here [3]

[1] https://github.com/projectcalico/vpp-dataplane
[2] https://fd.io/vppproject/vpptech/
[3] https://fosdem.org/2021/schedule/event/sdn_calicovpp/

@mhawari
Copy link
Author

mhawari commented Mar 3, 2021

CCing @mdr78

@jtollet
Copy link

jtollet commented Mar 17, 2021

Hello, Is there any update on this one ?

@I-gor-C
Copy link
Contributor

I-gor-C commented Mar 18, 2021

Hi @jtollet
We're still checking the feasibility of this. I'll update in a few days.

@I-gor-C
Copy link
Contributor

I-gor-C commented Mar 18, 2021

We're planning to deliver this feature to the DPDK 21.05 release.
I'll update if the timeline shifts.

@jtollet
Copy link

jtollet commented Apr 8, 2021

Hello @I-gor-C, I'd be interested to test it ahead of time if you have a pre-release. Feel free to ask if that makes sense to you.

@jtollet
Copy link

jtollet commented Apr 23, 2021

We're planning to deliver this feature to the DPDK 21.05 release.
I'll update if the timeline shifts.

Hello @I-gor-C, can you confirm it will be part of DPDK 21.05 ?

@cdtomkins
Copy link

@I-gor-C Can we get an update on whether this will be in DPDK 21.05, please?

@I-gor-C
Copy link
Contributor

I-gor-C commented May 6, 2021

Hi @cdtomkins
Unfortunately, it won't make it to 21.05 and is pushed to 21.08. We can share the prerelease version if you would like to try it in the meanwhile.

@cdtomkins
Copy link

Thanks @I-gor-C, @jtollet will probably want that.

@I-gor-C
Copy link
Contributor

I-gor-C commented May 6, 2021

Please contact me directly at igorch@amazon.com

@jtollet
Copy link

jtollet commented May 6, 2021 via email

@jtollet
Copy link

jtollet commented May 21, 2021

Hello, I can confirm that according to our first test, Interrupt mode now works fine. Thanks a lot!

@AloysAugustin
Copy link

Hi @I-gor-C , thanks for sharing the patch privately with us. We've been using it for a bit now without issues in EKS.

We'd like to include it in the next Calico VPP dataplane release, but to do so, we'd need to make it public in the VPP gerrit (so that we can patch the DPDK version we use, while the patch is not upstreamed in DPDK). Would you have any objection to that?

@ndagan
Copy link

ndagan commented Jun 10, 2021

Hi @AloysAugustin,
Yes, you are good to go to post it in VPP gerrit. We plan to release it for DPDK v21.08.

@AloysAugustin
Copy link

Hello, it looks like some changes in dpdk 21.05 cause the patch that was provided not to apply anymore, and I didn't see an equivalent patch merged in the dpdk main branch. Would it be possible for you to share an updated version of the patch that would apply to dpdk 21.05 or to the main branch ?
Thanks,
Aloys

@krawczyk-michal
Copy link
Contributor

Hi @AloysAugustin,

patch with Rx interrupts was just pushed for the community review and if there won't be objections, it will be merged for the DPDK v21.08: https://patches.dpdk.org/project/dpdk/patch/20210713154118.32111-5-mk@semihalf.com/.

The patch was modified a bit since the last version you got (especially the error handling path for the admin interrupt), but the core functionality should remain the same.

You can try to cherry-pick it from there. It should be applicable to the DPDK v21.05 as well.

@onong
Copy link

onong commented Aug 3, 2021

Hi @semihalf-krawczyk-michal,

Just wanted to let you know that we have tested the patch with dpdk 21.05 in calico/vpp and it seems to be working fine. Look forward to the patch being merged in 21.08.

Thanks,
Onong

@krawczyk-michal
Copy link
Contributor

Hi @onong,

Thanks a lot for your feedback!

The another good news is that this feature was already merged last week and can be found in tag v21.08-rc2 and newer, so it will be part of the DPDK 21.08 release.

Thanks,
Michal

@onong
Copy link

onong commented Aug 4, 2021

Thats great news, thanks much! @semihalf-krawczyk-michal

@shaibran
Copy link
Contributor

shaibran commented Dec 14, 2021

@onong @mhawari, fix was merged to DPDK 21.08

@akiyano akiyano closed this as completed Dec 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests