virtio-net: enable ioeventfd even if vhost=off
virtio-net-pci does not enable ioeventfd for historical reasons (and nobody ever checked whether it should be revisited). Note that other backends do enable ioeventfd for virtio-net. However, it has a major effect on performance. On Windows, throughput is _multiplied_ by 2 or 3 on TCP_STREAM (on small packets it is "only" a 30% improvement) and a little less so on TCP_MAERTS albeit still very much statistically significant. Latency also has a single digit improvement. This is not visible when using vhost, which forces ioeventfd=on, but it is substantial without vhost. In addition, also on Windows and with the RHEL 7.3 kernel, APICv seems to slow down virtio-net performance a bit, but the penalty with this patch goes from -25% to -7%. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
							parent
							
								
									23eb9e6b6d
								
							
						
					
					
						commit
						4a3f03ba8d
					
				| 
						 | 
					@ -2278,7 +2278,7 @@ static const TypeInfo virtio_serial_pci_info = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static Property virtio_net_properties[] = {
 | 
					static Property virtio_net_properties[] = {
 | 
				
			||||||
    DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags,
 | 
					    DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags,
 | 
				
			||||||
                    VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, false),
 | 
					                    VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true),
 | 
				
			||||||
    DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 3),
 | 
					    DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 3),
 | 
				
			||||||
    DEFINE_PROP_END_OF_LIST(),
 | 
					    DEFINE_PROP_END_OF_LIST(),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue