Hi all,
I have abnormally high CPU usage for what I assume is the process responsible for H.264 screen encoding -- `VMBlastW.exe`. I am connected on a LAN with the Horizon Client. I have to admit that we have several VMs beside the one I am having trouble with, and I recall we've had a number of well behaving installations where the protocol process on a VM did not account for more than 5% CPU usage in similar scenarios. So this is an anomaly, but I am not sure where to approach it. The scenario is Windows Media Player playing a [720p] movie (Big Buck Bunny 720p, AVI) which occupies 1/3 of the screen area. The Windows Media Player itself does not use more than 20% of the virtual CPU, so I don't think that the codec etc really matter here. What seems to matter is the amount of screen area being updated, affecting the H.264 encoding of the screen framebuffer.
The VM is set up with a vGPU that is backed by Nvidia GRID K1 card, profile K120Q (the bottom baseline). The CPU profile of the VM is a 2-socket setup, each CPU with 1 core. 4GB of RAM. Anyway, I think that 20% CPU for movie decoding sort of gives away the approximate computing power of the VM, give or take. That the aforementioned VMBlastW.exe process using never less than 40% of the CPU just for encoding and sending the screen over LAN, to me seems very abnormal, not the less because it is supposed to offload the H.264 encoding to the NVidia vGPU. When playing the movie full screen, Windows Media Player still tops at less than 25% CPU, while the VMBlastW.exe process averages at 80%!
The image and motion quality themselves are very adequate, therefore I judge packet loss can't be that high.
The ESX host running the VM is a Dell PowerEdge R730 rack server with an Intel Xeon E5-2667 v3 3.2Ghz with 256GB RAM. vSphere tells me that only 2,33Ghz out of the "virtual total" of 51,18Ghz on the virtualized host CPU is used. RAM is about half free. I mean, I don't see the host load at all. Yet, the Blast process maxes out the virtual CPU on the VM.
I have logs to show if required, I have confirmed that H.264 is used (as opposed to JPG/PNG which BLAST also can do) and the transport is TCP, not UDP, but I don't think this figures into the problem.
What can I do to get to the bottom of this? Maybe the system falls back on something, but I need to know what and somehow try to control it.
Thanks.