app/testpmd: distribute queues to cores
authorXueming Li <xuemingl@mellanox.com>
Sat, 26 May 2018 15:15:20 +0000 (23:15 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 12 Jul 2018 21:09:13 +0000 (23:09 +0200)
Current topology distribute forwarding streams to lcores by port, this
make unbalanced loading when port number larger than 2:
lcore 0: P0Q0->P1Q0, P0Q1->P1Q1
locre 1: P1Q0->P0Q0, P1Q1->P0Q1
If only one port has traffic, only one locre get fully loaded and the
other one get no forwarding. Performance is bad as only one core doing
forwarding in such case.

This patch distributes forwarding streams by queue, try to get streams
of each port handled by different lcore:
lcore 0: P0Q0->P1Q0, P1Q0->P1Q0
locre 1: P0Q1->P0Q1, P1Q1->P0Q1

Signed-off-by: Xueming Li <xuemingl@mellanox.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
app/test-pmd/config.c

index a17a7b5..14ccd68 100644 (file)
@@ -2177,15 +2177,11 @@ rss_fwd_config_setup(void)
                fs->tx_queue = rxq;
                fs->peer_addr = fs->tx_port;
                fs->retry_enabled = retry_enabled;
-               rxq = (queueid_t) (rxq + 1);
-               if (rxq < nb_q)
-                       continue;
-               /*
-                * rxq == nb_q
-                * Restart from RX queue 0 on next RX port
-                */
-               rxq = 0;
                rxp++;
+               if (rxp < nb_fwd_ports)
+                       continue;
+               rxp = 0;
+               rxq++;
        }
 }