I saw this post being re-tweeted by Ben Armstrong and read it this morning. It might actually be the solution to a weird problem we’ve been having at work.
Think back to your computer science classes. Every process on a computer only ever gets a slice of time on the processor. When it is moved from the processor is is places in a frozen state, allowing another process to execute. A 4 core processor allows 4 processes to run at once but lots of other processes are frozen in a non-responsive state. These idle times are extremely short. We cannot perceive them.
A virtual machine (on any platform) is a process. Therefore a VM can at times not actually be executing on the processor and be unresponsive to the network. Again, this is an incredibly short window.
Hyper-V handles this by buffering network traffic for the VM. The default size is 1MB. The blog post shows you how to make a change to this buffer size when dealing with larger amount of network traffic, i.e. there is a risk of the buffer filling and network traffic being lost. They suggest expanding the buffer to 2MB those scenarios, or to its maximum of 4MB in extreme scenarios.
The process is rather manual because it is very VM specific (finding the GUID for the virtual network card, searching for the GUID in the registry, adding some values) which is a pity. I hope MS comes up with a way to make this simpler, e.g. a slide control in the VM properties, or a policy setting for a VMM host group.