From: Danny Zhou <danny.zhou@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [RFC PATCH 0/5] Introduce low-latency one-shot rx interrupt into DPDK with polling/interrupt switch control example
Date: Tue, 20 Jan 2015 17:53:55 +0800 [thread overview]
Message-ID: <1421747640-20978-1-git-send-email-danny.zhou@intel.com> (raw)
DPDK interrupt notification/handling mechanism is based on UIO with
below limitation:
1) It is designed to handle LSC interrupt only with inefficient
suspended pthread wakeup procedure (e.g. UIO wakes up LSC interrupt
handling thread which then wakes up DPDK polling thread). In this way,
it introduces non-deterministic wakeup latency for DPDK polling thread
as well as packet latency if it is used to handle Rx interrupt.
2) UIO only supports a single interrupt vector which has to been shared
by LSC interrupt and interrupts assigned to dedicated rx queues.
This patchset includes below features:
1) Enable one-shot rx queue interrupt in ixgbe PMD for PF as well as VF.
2) Build on top of the VFIO mechanism instead of UIO, so it could support
up to 64 interrupt vectors for rx queue interrupts.
3) Have 1 DPDK polling thread handle per Rx queue interrupt with a
dedicated VFIO eventfd, which eliminates non-deterministic pthread wakeup
latency in user space.
4) Demonstrate interrupts control APIs and userspace NAIP-like
polling/interrupt switch algorithms in L3fwd-power example.
Danny Zhou (5):
ethdev: add rx interrupt enable/disable functions
ixgbe: enable rx queue interrupts
eal: add per rx queue interrupt handling based on VFIO
L3fwd-power: enable one-shot rx interrupt and polling/interrupt mode
switch
ixgbe: enable rx queue interrupts for VF
examples/l3fwd-power/main.c | 171 +++++++---
lib/librte_eal/common/include/rte_eal.h | 9 +
lib/librte_eal/linuxapp/eal/eal_interrupts.c | 189 ++++++++---
lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 11 +-
.../linuxapp/eal/include/exec-env/rte_interrupts.h | 4 +
lib/librte_ether/rte_ethdev.c | 45 +++
lib/librte_ether/rte_ethdev.h | 57 ++++
lib/librte_pmd_ixgbe/ixgbe_ethdev.c | 356 +++++++++++++++++++++
lib/librte_pmd_ixgbe/ixgbe_ethdev.h | 6 +
9 files changed, 765 insertions(+), 83 deletions(-)
--
1.8.1.4
next reply other threads:[~2015-01-20 9:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-20 9:53 Danny Zhou [this message]
2015-01-20 9:53 ` [dpdk-dev] [RFC PATCH 1/5] ethdev: add rx interrupt enable/disable functions Danny Zhou
2015-01-20 9:53 ` [dpdk-dev] [RFC PATCH 2/5] ixgbe: enable rx queue interrupts Danny Zhou
2015-01-20 9:53 ` [dpdk-dev] [RFC PATCH 3/5] eal: add per rx queue interrupt handling based on VFIO Danny Zhou
2015-01-20 9:53 ` [dpdk-dev] [RFC PATCH 4/5] L3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Danny Zhou
2015-01-20 9:54 ` [dpdk-dev] [RFC PATCH 5/5] ixgbe: enable rx queue interrupts for VF Danny Zhou
2015-01-23 9:22 ` [dpdk-dev] [RFC PATCH 0/5] Introduce low-latency one-shot rx interrupt into DPDK with polling/interrupt switch control example Ivan Boule
2015-01-23 10:16 ` Zhou, Danny
2015-01-26 17:07 ` Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1421747640-20978-1-git-send-email-danny.zhou@intel.com \
--to=danny.zhou@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).