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.
-
@JaredBusch Are you trying to say that not a single VM should have 8vCPUs or just that it would be better that @siringo decreases vCPU number on secondary (non-RDS) VM
-
@Mario-Jakovina said in Another RDS server?:
@JaredBusch Are you trying to say that not a single VM should have 8vCPUs or just that it would be better that @siringo decreases vCPU number on secondary (non-RDS) VM
None should have 8 because of his CPU only have 8 cores.
I would set the RDS to 6 and the other to 1 or 2 depending on what it is..
Basically, everything should be only 1 or 2 vCPU unless specifically noted otherwise.
-
@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?
@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?
-
@Mario-Jakovina said in Another RDS server?:
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?
Generally you don't want to match 1:1 because the management interface (vmware exi, hyper-v dom0, XCP-ng etc) all have some overhead.
-
@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.