Blocked rte_sched queue
Ernesto Ruffini
eruffini at outsys.org
Wed May 7 12:24:12 CEST 2025
Hi,
We use DPDK 24.11.1 rte_sched library for shaping traffic, and it happens
that some queues, mainly low-bandwidth TCs, from time to time stop sending
traffic.
After investigating, we found that this happens when a large packet is
enqueued: if this is accepted and enqueued in the sched port, it might be
too big to be sent out, completely blocking the queue, as there is no
mechanism to get rid of that packet, even if it will never be dequeued.
In particular, in function grinder_credits_check_with_tc_ov(),
pipe_tc_credits are lower than pkt_len, making enough_credit always false,
so the packet is never dequeued.
This can be seen also using the qos_sched example, setting pipe tc rates to
6250 (50Kbps) on a 100Gbps nic: pipe_tc_credits will be 250, and any packet
larger that that will completely block the queue, and no other packets, even
small, will ever pass.
We could not find any solution other than preventing long packets to be
enqueued.
Is there any other way to prevent queues from blocking?
Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/users/attachments/20250507/705d592e/attachment.htm>
More information about the users
mailing list