Could you eloborate on what is not so great about virtualised Pfsense, and on which platform?
My pfsense box (2.1.5) is virtualized on ESXi (5.5) with an Intel NIC passed through for the WAN connection and a vmxnet3 NIC for the LAN connection.
I see a very high CPU usage even with moderate throughput (50-60 mbits). We're talking 100% with 1 vCPU. The weird thing is, though, that the virtual OS doesn't see this. From the pfsense box, CPU usage is reported as being in the 2-10% range by both the pfsense monitor and top. Lots of other people are having the same issues.
There have been other smaller issues that might be due to myself, pfsense or the fact that the pfsense box is virtualized, but the above is 100% due to pfsense being virtualized, and I've been unable to find a fix for it.
I've seen the torrents come up as severe IO-suckers in this topic, though I would argue on the use pattern for that to really be an issue. Even if it is you could limit the IO on that specific machine or process, right? All too often the advice is to simply throw more resources and hardware at stuff but to be fair, people are doing the same thing with the €25,- Raspberry Pis they got for christmas.
Limiting IO will make it a horrible experience when you need to use the box. Everything will slow to a crawl, including the downloads. More resources is the solution IMO.
Also what is so great about Pfsense's DNS and DHCP daemons, and bad about Windows? Both can do more or less the same, with the exception that Windows is actually a decent authoritative DNS server plus with all it's bindings to the directory.
I'm sure Windows DNS is fine - DHCP not so much in my experience. My point on why I wouldn't do this on Windows in this case is simply consolidation. Why run a Windows machine for DNS and DHCP when you have pfsense doing your routing? Sounds like a waste of 4+ GB vMEM.