> -----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

Reply via email to