[dpdk-dev] Problem after hours of running rte_eth_rx_burst
Ariel Rodriguez
arodriguez at callistech.com
Tue Nov 3 23:25:53 CET 2015
After several hours (6 hour average) of running a dpdk application
, rte_eth_rx_burst suddenly fills only one mbuf with no data, thats is an
mbuf with mbuf->pool == NULL && m->buf_physaddr == 0 && m->buf_addr == NULL.
Obviosly that breaks our application. (rte_mbuf_sanity_check abort the
program)
How can we track the source of this kind of mis- behavoir?
We are using dpdk 1.6.0r2 and we also use the qos framework api.
The nic is 82599ES 10-Gigabit SFI/SFP+ with tapped traffic.
The use case is simply, our client is using a traffic tap to divert a copy
of around 10gbps of traffic to our appliance. We use a rxtx code similar to
the load_balancer example. We read in a pair of rx queue and the use a hash
function over the source ip field to deliver the packet in a worker core.
Then , when the worker core finishes to process that packet and it is
delivery to the tx core.
The tx core enqueue the packet to the qos framework, and just a few lines
code later dequeue several packet from the qos scheduler. Because we are
using a tap to divert a copy of the traffic , we disable the tx code to the
phisycal nic, so when we dequeue packets from the qos scheduler wi just
drop all of that packets.
Of course there is a reason why we use the qos scheduler code without
physically transmiting a packet, and is because we just want a few stats
about the qos framework behaviour.
Any ideas?
More information about the dev
mailing list