Hyper-V networking poor performance

Hi
I have moved recently our border router from physical to virtual (freshly installed 10.1-RELEASE-p3 AMD64 on 05.01.2015) based on Windows 2012 R2 and Hyper-V. After then I have problems with networking performance. Interrupts level raised from almost zero on physical to about 20-30% with 120 Mbps throughput and 300 users on LAN. Even worst problem is with dummynet which cuts speeds to about configured half. Additionally I have unexpected reboots caused by protection faults.

Our VM Server:
- QuadCore Intel Xeon E3-1240 v3, 3584 MHz (38 x 94)
- Mainboard Asus P9D WS
- 16 GB RAM DDR3
- Windows Server 2012 R2 Standard

VM for FreeBSD
- 4GB RAM no dynamic memory
- 4 cores of processor assigned

My question is if these issues are normal and I must go backwards to physical, or we can do something?
 
Does trying different NIC types help? Some folks here have reported performance issues using virtio(4) that were resolved by selecting a NIC on the hypervisor that presents itself as an em(4) driver Intel NIC.
 
Does trying different NIC types help? Some folks here have reported performance issues using virtio(4) that were resolved by selecting a NIC on the hypervisor that presents itself as an em(4) driver Intel NIC.

This mainboard is equipped with dual Intel Server LAN adapter (actually Intel I210 Ethernet Controller) recognised by FreeBSD installed physically as igb0/igb1.

Maybe actually it is some problem with driver, but in FreeBSD 10.1 on VM, network adapters work out of box as hn0/hn1.

On this machine we shape traffic for ca. 500 users. When set 0-40Mbps on dummynet for user it works ok. When set over 50Mbps user gets about half.

Today after some lecture I have found that:
Code:
net.inet.ip.dummynet.io_fast=1
makes BIG difference. Now speeds via dummynet are OK.
I will try also other tweaks.
 
Not sure if Hyper-V benefits from it but on my VPS I needed to add -tso to ifconfig_vnet0 or I'd get really lousy network performance. It's worth a try.

Code:
     -tso    If the driver supports tcp(4) segmentation offloading, disable
             TSO on the interface.  It will always disable TSO for ip(4) and
             ip6(4).
 
Back
Top