On Mon, 2011-01-31 at 17:30 -0800, Sridhar Samudrala wrote: > Yes. It definitely should be 'out'. 'in' should be 0 in the tx path. > > I tried a simpler version of this patch without any tunables by > delaying the signaling until we come out of the for loop. > It definitely reduced the number of vmexits significantly for small > message > guest to host stream test and the throughput went up a little. > > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c > index 9b3ca10..5f9fae9 100644 > --- a/drivers/vhost/net.c > +++ b/drivers/vhost/net.c > @@ -197,7 +197,7 @@ static void handle_tx(struct vhost_net *net) > if (err != len) > pr_debug("Truncated TX packet: " > " len %d != %zd\n", err, len); > - vhost_add_used_and_signal(&net->dev, vq, head, 0); > + vhost_add_used(vq, head, 0); > total_len += len; > if (unlikely(total_len >= VHOST_NET_WEIGHT)) { > vhost_poll_queue(&vq->poll); > @@ -205,6 +205,8 @@ static void handle_tx(struct vhost_net *net) > } > } > > + if (total_len > 0) > + vhost_signal(&net->dev, vq); > mutex_unlock(&vq->mutex); > } Reducing the signaling will reduce the CPU utilization by reducing VM exits. The small message BW is a problem we have seen faster guest/slow vhost, even I increased VHOST_NET_WEIGHT times, it didn't help that much for BW. For large message size, vhost is able to process all packets on time. I played around with guest/host codes, I only see huge BW improvement by dropping packets on guest side so far. Thanks Shirley -- 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