VMware Cloud Community
msidnam
Contributor
Contributor
Jump to solution

Sizing Citrix VM's (vCPU)

First, I have tried to understand the vCPU sizing from both the ESXi side and Citrix side (ie, the rule of 5 and 10). I am very confused and I hope someone can guide me. I'll try to be brief and then if more details are needed, please let me know.

We currently have 13 hosts in a vSAN cluster (not all hosts have their disks claimed. Only 8 do). 9 hosts have Intel Xeon Gold 5218 processors ( 2 x 16 cores @ 2.30Ghz) 4 hosts have Intel Xeon Gold 5220 processors ( 2 x 18 cores @ 2.20GHz). The 9 hosts have 1.5TB of RAM, the 4 hosts have 768GB of RAM.

The majority of our resources are used up by our Citrix environment. We publish a Windows 2019 Desktop for our users (as well as apps). We have about 100 (maybe a little more) Citrix servers where people log in to. We have several Catalogs where, for the most part, we have divided them between different service lines. The servers have a mix of software, outlook, teams, excel, word, adobe, chrome, edge, etc, being the most widely used.

When looking at our Citrix Studio, we have seen up to 660+ sessions. Once we start hitting around 600 sessions, the host CPU on several hosts will jump to 80-90% or more. We do have ControlUP and to us it seems like its just users using the system with the applications (excel, teams, chrome and adobe seem to be the highest used).

The Citrix servers had 8vCPUs and 32GB of RAM. We have been been changing them to 6vCPUs and 64GB of ram. We will see the Citrix server spike to sometimes 14Ghz. When we look at the server its pretty much just users being users and running excel, teams and adobe.

We are trying to make it so that the physical hosts aren't spiking to 80 or 90% but we are not sure the best way. Do we reduce the vCPUs to 4, and does it matter if we choose 4 vCPU's and then 1 core per socket or do we choose less sockets but more cores? If we choose less sockets but more cores, the options for cores don't seem to match properly. For example, if I choose 1 socket I only get an option of 1 core per socket. If I choose 3 sockets I only get 1 or 3 cores per socket. I heard uneven numbers are not recommended, but I don't know if that old or current advice. Another thing i read said its better to have 1 socket and then more cores, but i don't have the option to put 1 socket and 4 cores.

I was also thinking of doing resource pools but then I got even more confused. Ultimately I think we would like to have it so that each Citrix server is not using more than 10Ghz which we know will make the user experience slow, but we are trying to not overload the physical hosts.

Sorry for the rambling. If anyone has any advice or questions please let me know. Thank you.

0 Kudos
1 Solution

Accepted Solutions
mike-p
Enthusiast
Enthusiast
Jump to solution

Hi, the 6vCPU is the config I would avoid. My view is that the CPU is the only component which is presented exactly from the real hardware. Network , HBA, VGA etc are like simulations. If you look in the hardware management of the guest you see exactly the cpu type of the host. I try to align the virtual cpu configuration to the physical. If I use a 2 socket server I do not create vm with more than 2 sockets. I am not sure what happens if you send a request to a socket which does not exist. I assume that there can occur additional calculation cycles and performance loss. 

In your case I would divide 6 vCPU's on 2 Sockets and put all 4 vCPU's on 1 Socket. The advantage to keep the vCPU on one socket is the distribution of the RDIMM's on the physical host. With one socket you address only memory which is direct attached to this socket. You avoid the traffic socket to socket.

A lot of documents and blogs deal with the VMware cpu scheduling, NUMA and optimizing. According the documentation ESXi chooses automatically the best combination. I am not sure about that because I saw "misconfigured" vm's with 8 vCPU's on 8 sockets in vSphere7U3 with performance problems. After adjusting the number of vCPU's to the physical host the problem was solved.

View solution in original post

Tags (1)
0 Kudos
6 Replies
mike-p
Enthusiast
Enthusiast
Jump to solution

Hi,

I would first try to find out which cpu subscription matches the best like here :

https://docs.citrix.com/en-us/tech-zone/design/design-decisions/single-server-scalability.html

In Addition if I do not built  big machines with 16 and more vcpu's where autonuma jumps in I try to present the cpu equal to the hardware. If I have a 2 socket server I will never present more than 2 sockets (until 16 sockets with 1 cpu-> autonuma). In case of 4 cpu's per vm I would try to put them on one socket. 6 to 8 vcpu's I would place on 2 sockets.

when the system is up and running and I experience performance problems I run esxtop to check things like cpu ready time and other indicators for bottlenecks. 

 

0 Kudos
msidnam
Contributor
Contributor
Jump to solution

The Citrix SSS document, we would be in line with the rule of 5 as we are presenting Desktops. Granted, we are presenting shared Windows 2019 Desktops and not Windows 10 desktops. We are getting around 8-10 people per windows 2019 desktop.

With that said, I am attaching a couple images. the one thats named 6vCPU is what we currently have for our VM's. Should we make it like the 4vCPU attachment so that it shows 2 sockets and not 6 sockets? If we use the 4vCPU's, is that meaning they are only getting 4 vCPU's or 4 vCPU's x 2 sockets making it 8 vCPUs?

Sorry about the questions. It gets confusing to me. Thank you.

0 Kudos
mike-p
Enthusiast
Enthusiast
Jump to solution

Hi, the 6vCPU is the config I would avoid. My view is that the CPU is the only component which is presented exactly from the real hardware. Network , HBA, VGA etc are like simulations. If you look in the hardware management of the guest you see exactly the cpu type of the host. I try to align the virtual cpu configuration to the physical. If I use a 2 socket server I do not create vm with more than 2 sockets. I am not sure what happens if you send a request to a socket which does not exist. I assume that there can occur additional calculation cycles and performance loss. 

In your case I would divide 6 vCPU's on 2 Sockets and put all 4 vCPU's on 1 Socket. The advantage to keep the vCPU on one socket is the distribution of the RDIMM's on the physical host. With one socket you address only memory which is direct attached to this socket. You avoid the traffic socket to socket.

A lot of documents and blogs deal with the VMware cpu scheduling, NUMA and optimizing. According the documentation ESXi chooses automatically the best combination. I am not sure about that because I saw "misconfigured" vm's with 8 vCPU's on 8 sockets in vSphere7U3 with performance problems. After adjusting the number of vCPU's to the physical host the problem was solved.

Tags (1)
0 Kudos
msidnam
Contributor
Contributor
Jump to solution

Thank you. Where I am confused is if I want 6vCPU's, how do i do that in the settings of the VM? i might be wrong, but when I choose 6 under CPU, it then gives me options for Cores per socket. Do I choose a specific option under there or somewhere else? I'm attaching another screenshot of what I think might be right if I want 6 vCPU's spread out on 2 sockets (pic is named 2-Sockets-6vCPU).

I'm kind of caught in the middle because I think 8 vCPU is too much but 4 vCPU isn't enough.

Thank you again for your info and explanations.

 

EDIT: One more question, is it better to put the vCPUs on 1 socket? For example if I just have a 2 vCPU server do I spread that across two sockets or better to put it on one or does it not matter?

0 Kudos
mike-p
Enthusiast
Enthusiast
Jump to solution

Hi,

yes I would prefer  the configuration of the latest picture. 

And yes I would put a 2 vCPU on one socket if performance needs to be fully utilized. In this case you will not see a big difference. All this considerations depend also on the version of vSphere. vSphere 8 delivers a new automatic vTopology. Take some time :

 

https://blogs.vmware.com/performance/2022/11/extreme-performance-series-automatic-vtopology-for-vms-...

 

0 Kudos
msidnam
Contributor
Contributor
Jump to solution

We are on 7.0.3. I will take a look at the article, thank you.

What I will do is put all my 2vCPU servers on 1 socket. my 6vCPU  on 2 sockets (like the previous screenshot). For my 4vCPU servers, do I put them on 1 socket or 2?

EDIT: I saw in your first reply to put 4 vCPU on 1 socket.

Thank you again.

0 Kudos