Hello, new to VMWare here and hoping to tap the experience of the board if I may. I'm in the process of designing a heavily multi-threaded app. It's SOA-based, utilizing WCF and MSMQ and some other related technologies. We're going through the architecture phase and making hardware estimates and have just learned that due to measures beyond our control our entire middle tier will be comprised of VMWare virtual servers. Unfortunately I don't have the details of the hardware itself beyond them being multi-CPU boxes.
Unfortunately this is my first experience with VMWare beyond being used to replicate test environments and I'm a bit concerned with performance specifically relating to thread contention. The way we'd planned to configure WCF plus the caching mechanism we've been implementing will result in the creation of a large number of relatively short-lived threads. Thread pooling should help to mitigate this to some degree, I'm still concerned about the overhead that VMWare might bring to the table as far as CPU sharing goes.
So, my question is of course: should I be concerned? Could someone share some experience with performance implications of highly multi-threaded apps running in virtual server environments, or at least point me in the right direction? I've spent much of the weekend reading over various case studies about VMWare performance, for example in a hyperthreaded environment, but nothing that's specifically addressed my concerns.
Any advice/suggestions you can provide would be greatly appreciated.
this would be interested to see. First consider that what VMware technology does really well is consolidating low-footprint workloads. As soon as you start thinking about high-end workloads you get very quickly into the dark side of the things. This doesn't necessarily mean it won't perform but it just means there there are much less performance issues (and concerns) when you virtualize low-end workloads rather than high-end workloads.
Having this said there are organizations that are using major workloads on VMware and are fine with the result. One thing you need to consider is that a highly threaded application would be better deployed on a 4-way vSMP vm (i.e. a virtual machine with 4 virtual cpu's assigned to it) ... which is not the norm. For the sake it must be said that many people have had bad experiences with smp vm's in the past (2-way vm's) and my feeling is that very few are using 4-way smp vm's.
Bottom line is that every case is really a story apart. So I wouldn't just leverage positive or negative posts on this board to determine whethere that is a good idea or not. Especially in a border line situation like this I would test it in a small pilot. The last thing would be : DO NOT TEST IT ON A HOSTED PRODUCT (i.e. VMware Server, VMware Workstation, VMware Player etc etc). TEST IT ON ESX which is the flagship product and what will give you best performance (you don't want to give up just because on Workstation you don't get too much out of it).