Several VMworld presentations and best practice documents suggest that customers create fresh VMs, and do NOT convert an existing physical server to a VM (P2V), especially in case of Citrix XenApp/Presentation Server and Terminal Services. I frequently get asked why the rationale behind this - recommending against one of VMware's own products. So here's some explanation.
P2V using VMware Converter is usually more convenient, and faster to create VMs. However P2V can result in two key issues: larger VMs, and extra processes within a VM. Both can have serious impact for VM performance.
Most server class machines today have 2 sockets or more with at least a single core processor in each socket. The newer machines have multi-core processors. Add to this the fact that almost all physical servers are over-provisioned, with average CPU utilization at best in teens. Consequently, P2V invariably ends up creating larger VMs. Larger VMs means higher SMP related virtualization overheads and reduced DRS effectiveness.
Also most OEM vendors may have admin tasks/services such as SNMP agents etc running in background on physical servers. These additional services can result in several performance issues such as IRQ conflicts, polling/interrupt driven processes; all of which will typically exaggerate virtualization overhead after P2V.
Citrix XenApp/Presentation server (CPS) and Terminal Services environments are especially sensitive to larger VMs, and extra processes within a VM. CPS and Terminal Services are multi-user environments, with each user session running a number of processes. Consequently this environments exhibits high number of context switches between various processes, lot of process creation and destruction and lot of paging and page faults. All these place a heavier load on the Memory Management Unit (MMU) as a result. The above two issues in P2V'ed VMs - SMP related virtualization overheads and having additional processes running in a P2V'ed VM just aggravates this further. Hence the best practice recommendation to start with fresh VMs. And stick as fewer virtual CPUs as you really need.
Of course, in real-life, production environments, performance is just one of the considerations e.g. you may have a old windows server with some legacy OS/application stack, for which you cannot do a fresh install, recompile or port to newer OS. And so P2V is the best available option. In that case, watch out for the following things:
Before you Power on the new Virtual Machine after P2V, edit the VM settings to reduce the CPU count and memory, adjust the Windows HAL to UP version if needed, remove any other peripherals not required
Before P2V or after the P2V'ed VM is powered on, turn off and disable all unneeded processes and services.
You will need to spend some additional cycles, but you can make it work.
The newer 2nd generation hardware assist processors - AMD Barcelona/Shanghai and Intel Nehalem - do enable MMU virtualization, and can hide these issues to some extent. Having a cleaner VM, though, will definitely benefit performance.
Let me know if you have run into any other performance issues with P2V'ed VMs.