Another RDS server?
-
@Mario-Jakovina said in Another RDS server?:
@JaredBusch said in Another RDS server?:
None should have 8 because of his CPU only have 8 cores.
Does it mean that in my case (4-core CPU) VM should use only 3 vCPU even if it is only VM on the host?
Yes, this is correct.
@JaredBusch said in Another RDS server?:
Basically, everything should be only 1 or 2 vCPU unless specifically noted otherwise.
For DB servers and RDS servers, we use all available cores to better serve more users at the same time. Is something wrong with that?
While you can assign all cores to every virtual machine, it is a horrible idea. The virtual machines will be doing next to nothing but waiting on each other to finish background processes.
Check out
https://www.hpe.com/us/en/insights/articles/10-virtualization-mistakes-everyone-makes-1808.html
and
https://www.sqlskills.com/blogs/jonathan/cpu-ready-time-in-vmware-and-how-to-interpret-its-real-meaning/
if you want to know why. -
@travisdh1 said in Another RDS server?:
While you can assign all cores to every virtualhorrible idea. The virtual machines will be doing next to nothing but waiting on each other to finish background processes.
I did not mean to say that we have multiple VMs with all cores assigned.
We have one VM on one host, and we assign all cores to it - is that OK? -
@Mario-Jakovina said in Another RDS server?:
@travisdh1 said in Another RDS server?:
While you can assign all cores to every virtualhorrible idea. The virtual machines will be doing next to nothing but waiting on each other to finish background processes.
I did not mean to say that we have multiple VMs with all cores assigned.
We have one VM on one host, and we assign all cores to it - is that OK?IT will not have bottlenecks (generally) but it is still a horrible practice.
-
@travisdh1 said in Another RDS server?:
@Mario-Jakovina said in Another RDS server?:
@JaredBusch said in Another RDS server?:
None should have 8 because of his CPU only have 8 cores.
Does it mean that in my case (4-core CPU) VM should use only 3 vCPU even if it is only VM on the host?
Yes, this is correct.
Does it mean than in 1:1 virtualisation, you always "lose" one core?
-
@Mario-Jakovina said in Another RDS server?:
@travisdh1 said in Another RDS server?:
@Mario-Jakovina said in Another RDS server?:
@JaredBusch said in Another RDS server?:
None should have 8 because of his CPU only have 8 cores.
Does it mean that in my case (4-core CPU) VM should use only 3 vCPU even if it is only VM on the host?
Yes, this is correct.
Does it mean than in 1:1 virtualisation, you always "lose" one core?
Hypervisor needs to use the processor too. When you do not have 4 cores available, then the VM has to wait its turn.
Read the links, learn, and then respond again. -
@Mario-Jakovina said in Another RDS server?:
you always "lose" one core?
Also, if you are spec'ing your system this closely, you likely have other design issues.
-
@JaredBusch said in Another RDS server?:
IT will not have bottlenecks (generally) but it is still a horrible practive.
We did not notice any wrong with that.
We tested speed on our 4 vCPU VMs against Vultr 4 vCPU VM, and ours are much faster (50% if I recall correctly) -
-
@Mario-Jakovina said in Another RDS server?:
We tested speed on our 4 vCPU VMs against Vultr 4 vCPU VM, and ours are much faster (50% if I recall correctly)
That is a waste of a test. It means nothing.
-
@JaredBusch said in Another RDS server?:
@Mario-Jakovina said in Another RDS server?:
We tested speed on our 4 vCPU VMs against Vultr 4 vCPU VM, and ours are much faster (50% if I recall correctly)
That is a waste of a test. It means nothing.
We tested it to compare speed to understand what speed on VM do we get for money.
-
@Mario-Jakovina said in Another RDS server?:
@travisdh1 said in Another RDS server?:
@Mario-Jakovina said in Another RDS server?:
@JaredBusch said in Another RDS server?:
None should have 8 because of his CPU only have 8 cores.
Does it mean that in my case (4-core CPU) VM should use only 3 vCPU even if it is only VM on the host?
Yes, this is correct.
Does it mean than in 1:1 virtualisation, you always "lose" one core?
Ah, I was thinking you had both VMs running on a single host. My bad.
-
@travisdh1 said in Another RDS server?:
@Mario-Jakovina said in Another RDS server?:
@travisdh1 said in Another RDS server?:
@Mario-Jakovina said in Another RDS server?:
@JaredBusch said in Another RDS server?:
None should have 8 because of his CPU only have 8 cores.
Does it mean that in my case (4-core CPU) VM should use only 3 vCPU even if it is only VM on the host?
Yes, this is correct.
Does it mean than in 1:1 virtualisation, you always "lose" one core?
Ah, I was thinking you had both VMs running on a single host. My bad.
@Mario-Jakovina is not the OP. This is a branch conversation.
The OP is @siringo and he has two VM's with 8 vCPU, on the same host, that only has 8 cores.
-
@JaredBusch said in Another RDS server?:
@siringo said in Another RDS server?:
@Pete-S yes, there's one other VM. It has 8vCPU's 16GB of startup RAM and uses dynamic memory.
Aside from your runaway program eating memory, this is a problem. You are causing a wait state for CPU availability.
What was drilled into me back when I moved to virtualization is that before the Hypervisor can send the job to the real hardware, enough real cores had to be available to match the number used by the VM.
So each VM must have clock cycles for all 8 real cores available before they can process things.
Wow - I've never heard that before - thanks!
-
@JaredBusch said in Another RDS server?:
@siringo said in Another RDS server?:
@Pete-S yes, there's one other VM. It has 8vCPU's 16GB of startup RAM and uses dynamic memory.
Aside from your runaway program eating memory, this is a problem. You are causing a wait state for CPU availability.
What was drilled into me back when I moved to virtualization is that before the Hypervisor can send the job to the real hardware, enough real cores had to be available to match the number used by the VM.
So each VM must have clock cycles for all 8 real cores available before they can process things.
Besides the lack of physical cores (versus vCPUs) causing contention, there is also the problem of 70% CPU.
I believe that the CPU wait time, when the VM is waiting to be scheduled by the hypervisor, is not counted in the guest as CPU usage. You can only see it in the hypervisor as CPU wait time. So if the VM struggles to run, it will not show up as high CPU usage in the VM.
So basically there are several problems. You might solve the contention problem by changing to fewer vCPUs on the VMs, but I don't think you will solve the high CPU usage problem that way. You might even make it worse.
I think you need more cores and more RAM. RAM simply to minimize any swapping to disk when both VMs are asking for memory.
It would be a simple thing to swap the CPU to a 16 core in the same server. A refurb CPU like E5-2683 v4 would set you back about $300. And some more memory. At least as a stop gap measure until you can invest in a proper replacement.
-
Thanks everyone for your useful suggestions.
If I don't answer certain questions, don't take it personally, I appreciate all comments.
So from what I can tell from what others have mentioned, I need to optimise my RAM and sort out my vCPUs (amongst other things).
The server has 3 x 16GB sticks to get to 48GB. I've been given the go ahead for more RAM by the client.
As an aside, situations like this can occur when suppliers don't have stock of parts and clients want solutions in place. There's a chance that all I could get my hands on was 16GB sticks? But then again I should have ordered 4 and not three, but then again maybe all I could get was 3?????????
Anyway ..
So to fix my unbalanced memory problem, I need to add 1 or 5 extra sticks. 1 stick at 16GB would allow me to balance the memory, but I'd like to add more than 16GB.
I can't remember the memory 'layout' but it's usually in groups of two I think????
So I could have 2 groups of 2 x 16GB sticks.
This is what iLO shows me:
As far I can tell I could add an additional 16GB by adding 4 x 4GB sticks, that would give ma an additional 32 GB of RAM in 8 slots which should even up the memory config.
Does that sound correct?
So onto vCPUs.
@JaredBusch you mentioned:
before the Hypervisor can send the job to the real hardware, enough real cores had to be available to match the number used by the VM.If that is the case, then this setup is a real mess.
Over the weekend I'll alter the assignation of vCPUs to VMs.
I think I'll reduce both VMs down to 4 and see how we get on.
With regards to physical CPU's. Would you upgrade the current CPU to something with more cores or add a 2nd CPU?
I think the last time I replaced / installed a CPU it may have been something like a 32032 and had to wash the white paste off my fingers. How hard is it to install CPUs these days? I'm not embarrassed to say that playing with CPUs is something I purposefully stay away from.
Thanks for all the help.
-
@siringo said in Another RDS server?:
I think the last time I replaced / installed a CPU it may have been something like a 32032 and had to wash the white paste off my fingers. How hard is it to install CPUs these days? I'm not embarrassed to say that playing with CPUs is something I purposefully stay away from.
It's actually pretty simple. You need a screw driver, some paper or tissue, some isopropyl alcohol (rubbing alcohol) to clean off the old thermal paste and some new thermal paste. It takes maybe 15 minutes all in all to replace a CPU but give yourself plenty of time. Or have a tech do it for you.
Watch a CPU upgrade in the video below from Dell:
Youtube Video -
@siringo Besides decreasing number of vCPU, I would check does your other (non-RDS) VM needs that much RAM. If you can decrease RAM for second VM, and give fixed amount of RAM to each VM, your RDS VM could significantly decrease swap usage which is probably bottleneck.
SSD would be nice
-
@siringo said in Another RDS server?:
So to fix my unbalanced memory problem, I need to add 1 or 5 extra sticks. 1 stick at 16GB would allow me to balance the memory, but I'd like to add more than 16GB.
I can't remember the memory 'layout' but it's usually in groups of two I think????
So I could have 2 groups of 2 x 16GB sticks.
This is what iLO shows me:As far I can tell I could add an additional 16GB by adding 4 x 4GB sticks, that would give ma an additional 32 GB of RAM in 8 slots which should even up the memory config.
Does that sound correct?The "group" you are talking about is four memory sticks. That's called memory channels because the CPU can read from all four at the same time.
So a E5-2600 v4 series CPU has 4 memory channels and three banks of them for a total of 12 "sticks" (DIMMs) per CPU.
So you're right that you need 4 x 16GB sticks to get to a balanced memory config.
Then you need 4 more if you are going to expand the memory. It can be any size BUT if you intend to add another CPU it has to be the same size. So I suggest 4 x 16GB for the expansion.
-
@siringo said in Another RDS server?:
With regards to physical CPU's. Would you upgrade the current CPU to something with more cores or add a 2nd CPU?
You might have to consider the budget here.
But in general you get better performance with one 16 core CPU than two 8 core CPUs.
It's because one CPU only has access to half the RAM and some of the I/O. So when a CPU need to communicate with something that is connected to the other CPU, the data has to pass through the interconnect between the CPUs. That's a bottleneck and slows it down.
-
@Mario-Jakovina Thanks Mario. I've limited the RAM allocation of this 2nd VM to no more than 16GB. I'll monitor it and see what happens. Thanks.