[Bug 248652] iflib: netmap pkt-gen large TX performance difference between 11-STABLE and 12-STABLE/CURRENT on ix & ixl NIC

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Oct 21 21:18:51 UTC 2020


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=248652

--- Comment #32 from Vincenzo Maffione <vmaffione at FreeBSD.org> ---
(In reply to Sylvain Galliano from comment #29)
Thanks again for your tests.

I'm inclined to think that the pkt-gen hang issue that you see is not directly
caused by the ixl patch.
Would you please try to test what happens if you only apply the ixl patch
(discarding all the changes related to the netmap timer)?
In the very end the change to ixl is orthogonal to the netmap timer issue.

Also, it would be useful to understand whether the hang problem comes from some
sort of race condition or not. For this purpose, you may try to use the -R
argument of pkt-gen (this time with the timer+ixl patch) to specify a maximum
rate in packets per second (pps). E.g. you could start from 1000 pps, check
that it does not hang, double the rate and repeat the process until you find a
critical rate that causes the hang. Unless this is not a race condition and the
hang happens at any rate.
When the hang happens, it may help to see the ring state, e.g. with the
following patch to pkt-gen. I expect to see head, cur and tail having the same
value. 

diff --git a/apps/pkt-gen/pkt-gen.c b/apps/pkt-gen/pkt-gen.c
index ef876f4f..19497fe9 100644
--- a/apps/pkt-gen/pkt-gen.c
+++ b/apps/pkt-gen/pkt-gen.c
@@ -1675,6 +1675,10 @@ sender_body(void *data)
                                break;
                        D("poll error on queue %d: %s", targ->me,
                                rv ? strerror(errno) : "timeout");
+                       for (i = targ->nmd->first_tx_ring; i <=
targ->nmd->last_tx_ring; i++) {
+                               txring = NETMAP_TXRING(nifp, i);
+                               D("txring %u %u %u", txring->head, txring->cur,
txring->tail);
+                       }
                        // goto quit;
                }
                if (pfd.revents & POLLERR) {

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the freebsd-net mailing list