Sasha Levin <levinsasha928@xxxxxxxxx> wrote on 11/14/2011 03:45:40 PM: > > Why both the bandwidth and latency performance are dropping so > > dramatically with multiple VQ? > > It looks like theres no hash sync between host and guest, which makes > the RX VQ change for every packet. This is my guess. Yes, I confirmed this happens for macvtap. I am using ixgbe - it calls skb_record_rx_queue when a skb is allocated, but sets rxhash when a packet arrives. Macvtap is relying on record_rx_queue first ahead of rxhash (as part of my patch making macvtap multiqueue), hence different skbs result in macvtap selecting different vq's. Reordering macvtap to use rxhash first results in all packets going to the same VQ. The code snippet is: { ... if (!numvtaps) goto out; rxq = skb_get_rxhash(skb); if (rxq) { tap = rcu_dereference(vlan->taps[rxq % numvtaps]); if (tap) goto out; } if (likely(skb_rx_queue_recorded(skb))) { rxq = skb_get_rx_queue(skb); while (unlikely(rxq >= numvtaps)) rxq -= numvtaps; tap = rcu_dereference(vlan->taps[rxq]); if (tap) goto out; } } I will submit a patch for macvtap separately. I am working towards the other issue pointed out - different vhost threads handling rx/tx of a single flow. thanks, - KK -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html