> -----Original Message----- > From: Ilya Maximets [mailto:i.maxim...@samsung.com] > Sent: Friday, March 4, 2016 6:00 PM > To: Wang, Zhihong <zhihong.w...@intel.com>; dev@openvswitch.org > Cc: Flavio Leitner <f...@redhat.com>; Traynor, Kevin > <kevin.tray...@intel.com>; > Dyasly Sergey <s.dya...@samsung.com> > Subject: Re: vhost-user invalid txqid cause discard of packets > > Hi, Zhihong. > I can't reproduce this in my environment. > Could you please provide ovs-vswithd.log with VLOG_DBG enabled > for netdev-dpdk and outputs of following commands: > # ovs-vsctl show > # ovs-appctl dpctl/show > # ovs-appctl dpif-netdev/pmd-rxq-show > in 'good' and 'bad' states? > > Also, are you sure that VM started with exactly 4 queues?
Yes it's exact 4 queues. Please see command output below. In "bad" case only vhost txq 0, 1 are sending packets, I believe the other 2 become -1 after the lookup. "good": ------------------------------------------------------ [20160301]# ./ovs/utilities/ovs-vsctl show a71febbd-fc2b-4a0a-beb2-d6fe0ae68d58 Bridge "ovsbr0" Port "ovsbr0" Interface "ovsbr0" type: internal Port "vhost-user1" Interface "vhost-user1" type: dpdkvhostuser options: {n_rxq="4"} Port "dpdk0" Interface "dpdk0" type: dpdk options: {n_rxq="4"} [20160301]# ./ovs/utilities/ovs-appctl dpctl/show netdev@ovs-netdev: lookups: hit:2642744165 missed:8 lost:0 flows: 8 port 0: ovs-netdev (internal) port 1: ovsbr0 (tap) port 2: vhost-user1 (dpdkvhostuser: configured_rx_queues=4, configured_tx_queues=4, requested_rx_queues=4, requested_tx_queues=73) port 3: dpdk0 (dpdk: configured_rx_queues=4, configured_tx_queues=64, requested_rx_queues=4, requested_tx_queues=73) [20160301]# ./ovs/utilities/ovs-appctl dpif-netdev/pmd-rxq-show pmd thread numa_id 0 core_id 16: port: dpdk0 queue-id: 2 pmd thread numa_id 0 core_id 10: port: vhost-user1 queue-id: 0 pmd thread numa_id 0 core_id 12: port: vhost-user1 queue-id: 2 pmd thread numa_id 0 core_id 13: port: vhost-user1 queue-id: 3 pmd thread numa_id 0 core_id 14: port: dpdk0 queue-id: 0 pmd thread numa_id 0 core_id 15: port: dpdk0 queue-id: 1 pmd thread numa_id 0 core_id 11: port: vhost-user1 queue-id: 1 pmd thread numa_id 0 core_id 17: port: dpdk0 queue-id: 3 ------------------------------------------------------ "bad": ------------------------------------------------------ [20160301]# ./ovs/utilities/ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x3f000 2016-03-04T03:33:30Z|00041|ovs_numa|WARN|Invalid cpu mask: x 2016-03-04T03:33:30Z|00042|dpif_netdev|INFO|Created 6 pmd threads on numa node 0 [20160301]# ./ovs/utilities/ovs-vsctl show a71febbd-fc2b-4a0a-beb2-d6fe0ae68d58 Bridge "ovsbr0" Port "ovsbr0" Interface "ovsbr0" type: internal Port "vhost-user1" Interface "vhost-user1" type: dpdkvhostuser options: {n_rxq="4"} Port "dpdk0" Interface "dpdk0" type: dpdk options: {n_rxq="4"} [20160301]# ./ovs/utilities/ovs-appctl dpctl/show netdev@ovs-netdev: lookups: hit:181693955 missed:7 lost:0 flows: 6 port 0: ovs-netdev (internal) port 1: ovsbr0 (tap) port 2: vhost-user1 (dpdkvhostuser: configured_rx_queues=4, configured_tx_queues=4, requested_rx_queues=4, requested_tx_queues=73) port 3: dpdk0 (dpdk: configured_rx_queues=4, configured_tx_queues=64, requested_rx_queues=4, requested_tx_queues=73) [20160301]# ./ovs/utilities/ovs-appctl dpif-netdev/pmd-rxq-show pmd thread numa_id 0 core_id 13: port: vhost-user1 queue-id: 1 port: dpdk0 queue-id: 3 pmd thread numa_id 0 core_id 14: port: vhost-user1 queue-id: 2 pmd thread numa_id 0 core_id 16: port: dpdk0 queue-id: 0 pmd thread numa_id 0 core_id 17: port: dpdk0 queue-id: 1 pmd thread numa_id 0 core_id 12: port: vhost-user1 queue-id: 0 port: dpdk0 queue-id: 2 pmd thread numa_id 0 core_id 15: port: vhost-user1 queue-id: 3 ------------------------------------------------------ > > Best regards, Ilya Maximets. > > On 03.03.2016 18:24, Wang, Zhihong wrote: > > Hi, > > > > I ran an OVS multiqueue test with very simple traffic topology, basically > > 2 ports each with 4 queues, 8 rxqs in total, like below: > > > > Pktgen <=4q=> PHY <=4q=> OVS <=4q=> testpmd in the guest > > > > First set pmd-cpu-mask to 8 cores, and everything works fine, each rxq > > got a core, and all txqids are valid. > > > > Then I set pmd-cpu-mask to 6 cores, and then 2 txqids become invalid in > > __netdev_dpdk_vhost_send(): > > qid = vhost_dev->tx_q[qid % vhost_dev->real_n_txq].map; > > > > qid returns -1 and this leads to discard of packets. > > > > Consequently in testpmd in VM we see only 2 queues are working and > > throughput drops more than a half. > > > > It works again when I set pmd-cpu-mask to 4 cores. > > > > My OVS and DPDK code are pulled from the repo on March 1st, 2016. > > > > Let me know if you need more info to reproduce this issue. > > > > > > Thanks > > Zhihong _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev