2 Replies Latest reply on Jul 18, 2019 3:23 AM by StephenMoll

    Quantifying CPU/Memory Usage Overheads

    StephenMoll Hot Shot

      Quantifying the amount of CPU usage attributable to a VMs vCPU configuration is fairly trivial and well understood. This is not however the only way a VM will consume host pCPU resources. What about the VM's vNICs, virtual graphics adapter, storage IO etc? These must surely use host pCPU resources, but how much.


      We know that a host reserves 10% of host CPU resources for itself, but does this blanket figure cover all the processing for the 'extras' a VM may or may not have? I'm not so sure.


      If I am right, then what allowances should be allowed for a vNIC? How does this scale when a VM has two, three or more vNICs?

      What CPU usage should be allowed for storage IO? How does this vary between local and SAN storage? How does it vary between FC and iSCSI SAN storage?


      I am trying to find answers to this because the system designers want to pack as many VMs onto a host as possible. The calculations only take into account the vCPU configuration of the VMs to be run. Some of these have multiple vNICs. Some will need to process streamed video, so the vNICs will be really rather busy, but what is the cost in host resources for this?


      I have copies of "Performance Best Practices for VMware vSphere 6.7", "VMware vSphere 6.7 Clustering Deep Dive" and "vSphere 6.5 Host Resources Deep Dive".

      The Performance Best Practices document is very detailed on the settings and features around vNICs and how they utilise pCPU resources, but I have not been able to quantify anything.


      Is there a good guide I could be reading to understand more on this topic?


      And that doesn't even discuss memory! I'll get to that another time.

        • 1. Re: Quantifying CPU/Memory Usage Overheads
          StephenMoll Hot Shot

          OK so getting somewhere...


          vSphere 6.5 Host Resources Deep Dive : Network Resources - VMKernel Network


          Each VM has a kernel thread assigned to it "TX THREAD" that handles network output.

          Each host pNIC has a kernel thread assigned to it "NETPOLL THREAD" that handles inbound traffic to the host.

          All processing in these threads handling packets to/from a particular VM are accounted against that VMs vCPU resource usage, and hence a deduction against any CPU reservations/limits that VM has.


          Now I need to dig further and try and quantify them in some way, and I haven't looked at pCPU resources consumed by processing storage IO.

          • 2. Re: Quantifying CPU/Memory Usage Overheads
            StephenMoll Hot Shot

            Ooof! Such a minefield this topic.


            So the TX and NETPOLL threads definitely account for the network IO sent and received by a VM, but it is at the moment unclear as to whether this includes such things as storage IO where iSCSI is used between a host and a SAN, and for PCoIP IO in a Horizon VDI environment.


            Still digging!