[dpdk-dev] Free up completed TX buffers
Zoltan Kiss
zoltan.kiss at linaro.org
Fri May 29 19:00:50 CEST 2015
Hi,
I've came across an another problem while sorting out the one fixed by
my patch "ixgbe: fix checking for tx_free_thresh". Even when the
threshold check is correct it can happen that the application run out of
free buffers, and the only solution would be to get back the ones from
the TX rings. But if their number is still less than tx_free_thresh (per
queue), currently there is no interface to achieve that.
The bad way is to set tx_free_thresh to 1, but it has a very bad
performance penalty. The easy way is just to increase your buffer pool's
size to make sure that doesn't happen. But there is no bulletproof way
to calculate such a number, and based on my experience it's hard to
debug if it causes problem.
I'm thinking about a foolproof way, which is exposing functions like
ixgbe_tx_free_bufs from the PMDs, so the application can call it as a
last resort to avoid deadlock. Instead it causes probably worse
performance, but at least fools like me will easily see that from e.g.
oprofile.
How does that sound? Or is there a better way to solve this problem?
Regards,
Zoli
More information about the dev
mailing list