Re: [PATCH 6/6] vhost_net: don't poll on -EFAULT

From: Jason Wang
Date: Tue Apr 17 2012 - 02:30:36 EST


On 04/17/2012 02:07 PM, Michael S. Tsirkin wrote:
On Tue, Apr 17, 2012 at 01:54:55PM +0800, Jason Wang wrote:
On 04/17/2012 12:57 PM, Michael S. Tsirkin wrote:
On Tue, Apr 17, 2012 at 11:27:01AM +0800, Jason Wang wrote:
On 04/16/2012 09:39 PM, Michael S. Tsirkin wrote:
On Mon, Apr 16, 2012 at 04:28:10PM +0800, Jason Wang wrote:
On 04/16/2012 03:16 PM, Michael S. Tsirkin wrote:
>On Mon, Apr 16, 2012 at 02:08:33PM +0800, Jason Wang wrote:
>>Currently, we restart tx polling unconditionally when sendmsg()
>>fails. This would cause unnecessary wakeups of vhost wokers as it's
>>only needed when the socket send buffer were exceeded.
>Why is this a problem?
> This issue is when guest driver is able to hit the
-EFAULT, vhost
discard the the descriptor and restart the polling. This would wake
vhost thread and repeat the loop again which waste cpu.
Does same thing happen if we get an error from copy from user?

Right, so do you think it makes sense that we only restart polling
on -EAGAIN or -ENOBUFS?
Sounds OK. BTW how do you test this?

Not very hard, w/o this patch, we can see almost 100% cpu
utilization for vhost thread if guest hit EFAULT or EINVAL. With
this patch, the cpu utilization should be very low I think.
Yes but do you have a test that makes guest hit EFAULT or EINVAL?

Looks like we can do this by supplying an invalid hdr_len in vnet header as tap does the check for this.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/