Hi,
I got a VMworld 2007 slide of a Citrix session (which I could not attend because another interesting one was scheduled at the same time) that says you should only assign 1 vCPU to a Citrix or Terminal Server.
I would like to know why? If there is one app taking 100% cpu, then the entire VM is slow...so why only one vCPU?
TIA.
Just like any other VM, start with 1 vCPU and add more as needed. Normal rules apply, e.g. don't assign a Citrix VM with 2 vCPUs if the host only has 2 cores.
It could of course be argued that a Citrix VM is more likely to need >1 vCPU when compared with other servers.
Chris
You should start with 1vCPU (Best Practice anyways) - test it and then add additional vCPU's if necessary.
DB
I thought 1 vCPU was the best practice, not just the way to start with.
I remember things about CPU contention or something I can't explain...
But still: if one application suddenly hangs and takes 100% cpu, then every user will feel this. If there are 2 vCPU's, at least the other vCPU will still be available...
so my best practice would be to start with 2vCPU's...
That logic is true in a single user environment, however is a application suddenly takes 100% cpu chances are there are serveral users that have instances of that application open as well so it would not matter if you had one CPU or 8 CPUs all would be at 100%
The only why do deal with that scenairo is to have some sort of memory mamagement in the VM like Appsence Performance manager or TScale.
The main reason as to why you use a single vCPU is to cut down on CPU contention,
for example if you have a dual core 2 CPU host you will have 4 vCPU available for machine, if you have a dual vCPU machine you will have to wait for two of the four cores to become available to accept instructions before you could complete a single instruction within your guest, bearing in mind that the SC need access to a pCPU or core that means in reality 3 core available for instructions.
If you found this or any other post helpful please consider the use of the Helpfull/Correct buttons to award points
Kind Regards
Tom,
I would say it's an issue of scale up vs. scale out. You may get better performance/user if you build multiple Citrix VMs rather than try add more users to a single VM. It's always easier for the ESX host to schedule a single CPU than to try to schedule multiple CPUs.
If there are about 10 Citrix users, I think 1 VM is enough. I'll use 2 vCPU when on a dual CPU quad core ESX server.
When less than 4 cores contention might indeed occur more often and then I'll use 1 vCPU.
I don't understand why a memory management tool would help in controlling CPU usage... I don't know the products though.
Indeed, sometimes an app can crash for multiple users and then having 2 or 8 vCPU's won't matter. But for the occasional crash/hang of just one app...taking 2 vCPU's will at least help there. The user noticing the crash will try to kill the process and then the Citrix will be okay again and other users won't have been affected.
Appsense performance manager is actually a CPU manager, it is their Optimiser product that manages Memory, have a look at their website www.appsense.com. I would not use a dual vCPU guest under any circumstances. The CPU profile of a terminal Server is such that it is always running at high CPU usage. therefore you would be tieing down two of your pCPU cores almost perminantly. personally if your Guest needs that much CPU I would consider leaving it Physical. the other alternative is to create another Citrix Guest to half the work load, you will find that you will get more users over two single vCPU machines than you would on 1 dual vCPU guest. this is due to the fact that your guest will only be waiting for one pCPU core per processor cycle to come available, rather than having to wait for 2 pCPU cores per processor cycle.
Kind Regards
Tom,
I think I was at this session. The reason for choosing 1 vCPU VMs was that you cold pack more concurrent Citrix users per physical hardware, then if you used 2 vCPU VMs to load an ESX server.