net/tap: add Rx trigger
authorAdrien Mazarguil <adrien.mazarguil@6wind.com>
Tue, 14 Mar 2017 12:51:58 +0000 (13:51 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 4 Apr 2017 16:59:39 +0000 (18:59 +0200)
commita0d8e807d9dea64b92f796ca829260dbaec0008c
tree35554ed0f2aa7cf00cdb311055cdc523bb985577
parentd3668acb7b49fad0e85faf65d42001ca654f1ed4
net/tap: add Rx trigger

This commit adds a signal-based trigger to the Rx burst function in order
to avoid unnecessary system calls while Rx queues are empty.

Triggered Rx bursts put less pressure on the kernel, free up CPU resources
for applications and result in a noticeable performance improvement when
sharing CPU threads with other PMDs.

Measuring the traffic forwarding rate between two physical devices in
testpmd (IO mode, single thread, 64B packets) before and after adding two
tap PMD instances (4 ports total) that do not process any traffic and
comparing results yields:

Without Rx trigger:

 -15% (--burst=32)
 -62% (--burst=1)

With Rx trigger:

 -0.3% (--burst=32)
 -6% (--burst=1)

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Pascal Mazon <pascal.mazon@6wind.com>
Acked-by: Keith Wiles <keith.wiles@intel.com>
drivers/net/tap/rte_eth_tap.c