none
VDIs --- Sluggish Performance --- Need a GPU?

    Question

  • Folks:

    I have a Dell T620 with two E5-2650s and 32 G of Ram running Server 2012 box and hosting about 10 Win8 VDIs.  User performance is sluggish.  I even tried to amp up a user so that he had three cores and 6 megs of ram. 

    I saw a BPA statement that said that at least one GPU on the physical computer should support RemoteFX, but I believe that we do not have any GPUs.

    Do we need to add a GPU?  Should we expect a good performance improvement?  Are there other steps that might improve performance?

    Thanks.

    Micah

    Thursday, January 03, 2013 12:53 AM

Answers

  • RAID5 is good for maximum storage, but poor for performance.  Each write to disk in a RAID5 configuration can result in four disk IOs.  You have 10K disks, so that helps, but RAID5 will not provide optimal performance, particularly for something as write active as a client OS.

    "box is hosting three servers:  (1) AD DC; (2) File Services, Hyper-V, Print Services, RDS; and (3) VDI."  Do you mean that you are running the DC and Hyper-V, File Services, and RDS on the parent partition and then you are trying to run VDI guests?  Wow!  That is not recommended.  The recommended way to do things would be to run Hyper-V by itself in the parent partition and then create VMs for AD, File and Print Services, and RDS.  Of course, those would then compete for virtual resources, but that is a better configuration that trying to run all those things in the parent partition and then hope for good performance of the VMs.

    In order to actually determine real CPU usage, you have to look at the right performance counters.  If you are simply looking at perfmon on the physical host, you will not be seeing any of the CPU utilization of any VM.  There are special performance counters for reporting on virtual machine activity - you can actually look at the individual VMs.  I've seen physical hosts that are about out of CPU power and perfmon in the parent partition is showing just 2-5% utilization, but, if you add up all that is being used by the VMs, you can see where the CPU is being used.

    Placement of memory DIMMS is critical to performance for most implementations today.  Most servers are using NUMA configurations and the memory needs to be inserted into the proper slots in order to ensure each processor has the same amount of memory.  If they have differing amounts, it can drastically impact performance.  I am pretty sure Dell publishes a guide for how to properly insert memory.  Most of the time, it is not simply filling up the DIMM slots from left to right; there is a specific sequence and order that should be used.

    Pooled VDI guests are created by having a single master image and each guest gets a differencing disk off it.  Personal VDI guests get a complete copy of an environment that is not shared with anyone else.  If clients need to make changes to their VDI guest and have it saved from one session to the next, it is generally done with personal copies.  If a client gets a generic image each time they come in, it is common to use a pooled concept.  You set them up differently within VDI.

    What sort of network connections do you have?  1 GE?  10 GE?  How much other network traffic exists on the wire?  Are the clients coming in directly over the LAN or are they connection over a VPN of some sort?

    And, finally, 'sluggish' is a rather imprecise word.  How do you define it?


    tim

    Thursday, January 03, 2013 11:44 PM
  • FYI, recently my colleague setup 2 HyperV cluster with Win7 and Win8 VDI.

    The Win7 is given 1GB memory while Win8 is given 4Gb.

    The interesting part is Win7 is faster than Win8.

    Even Win8 is configure with 4GB it is still slow and suggish performance

    Friday, January 04, 2013 1:36 AM

All replies

  • Thanks, Aaron.  But the sluggishness happens even if only half of the VDIs are shut down.  And creating a cluster really is not an option; I am not going to double the sizeable investment that we already made!

    Thursday, January 03, 2013 2:34 AM
  • Hi

    The GPU is only for hardware accelerated RemoteFX where you need the GPU to encode the image being sent over the lan.

    Windows Clients tend to use more disk IO then servers, how is you RAID setup on the hyperv host?

    Thursday, January 03, 2013 9:54 AM
  • Is the server doing anything else?

    What sort of things are the Win 8 clients doing?

    Do you get sluggish performance with just 1 instance of Win 8 running?

    Can you set up some performance counters on the network and hard drives?

    Thursday, January 03, 2013 1:14 PM
  • I agree with Melakh.  You need to provide some sort of baseline about your configuration.  How are the remote connections come in?  What is the client device?  What applications are you trying to run?  What is the IO, both network and disk of a single user?  What sort of storage are you using?  VDI would benefit from the highest speed disks, e.g. 15K drives instead of 7.2K drives.  Are you using RAID?  Are the VDI images personal or pooled?  Is the memory in the physical server configured correctly (if it is not balanced to the two processors, it can impact performance)?

    tim

    Thursday, January 03, 2013 5:28 PM
  • Thank you, Tim and Melakh, for your comments.  I will give you as many details as seem relevant to me and you can let me know if there are other details that are also relevant.

    We are running a Dell T620 with two E5-2450 processors.  It has 32G of RAM (8x4G RDIMM, 1600 MT/s).

    We have two RAID arrays running on a Dell PERC H710 controller with 512M cache:  Our physical server uses a 250G RAID 5 array consisting of three(?) 2.5" 10k 300G SAS6 drives.  We have a second RAID 5 array consisting of four 2.5" 10k 600G SAS6 drives for our VDIs, etc., etc.

    The box is hosting three servers:  (1) AD DC; (2) File Services, Hyper-V, Print Services, RDS; and (3) VDI.  (I didn't create this, so I might not be remembering roles quite correctly.)

    Remote connections come in from within a LAN and from outside the LAN.  Most of the client hosts are Win8 computers.  The VDIs are all Win8.

    I don't know if it is set up with pooled or personal VDI images.   I have no idea if the memory is balanced.

    Each VDI has WordPerfect, Word, Acrobat, Outlook, and Time Matters installed on them (all or none running at any given time, of course).  Time Matters is a SQL-based practice management program.

    Overall, CPU usage is minuscule.  Looking at my list of Virtual Machines, at any given time I am rarely reaching 5% total for all machines.

    Memory usage is usually about 750MB for an inactive machine and 1500-2500MB for a machine in use.  All virtual devices now in use right now (including the two virtual servers) total 20G of memory usage according to Hyper-V Manager.

    I believe that we have performance counters turned on for all three servers, but I haven't looked at that data yet.

    Does this help?  Is there more that would be useful?

    Thanks again.

    Micah

    Thursday, January 03, 2013 10:14 PM
  • RAID5 is good for maximum storage, but poor for performance.  Each write to disk in a RAID5 configuration can result in four disk IOs.  You have 10K disks, so that helps, but RAID5 will not provide optimal performance, particularly for something as write active as a client OS.

    "box is hosting three servers:  (1) AD DC; (2) File Services, Hyper-V, Print Services, RDS; and (3) VDI."  Do you mean that you are running the DC and Hyper-V, File Services, and RDS on the parent partition and then you are trying to run VDI guests?  Wow!  That is not recommended.  The recommended way to do things would be to run Hyper-V by itself in the parent partition and then create VMs for AD, File and Print Services, and RDS.  Of course, those would then compete for virtual resources, but that is a better configuration that trying to run all those things in the parent partition and then hope for good performance of the VMs.

    In order to actually determine real CPU usage, you have to look at the right performance counters.  If you are simply looking at perfmon on the physical host, you will not be seeing any of the CPU utilization of any VM.  There are special performance counters for reporting on virtual machine activity - you can actually look at the individual VMs.  I've seen physical hosts that are about out of CPU power and perfmon in the parent partition is showing just 2-5% utilization, but, if you add up all that is being used by the VMs, you can see where the CPU is being used.

    Placement of memory DIMMS is critical to performance for most implementations today.  Most servers are using NUMA configurations and the memory needs to be inserted into the proper slots in order to ensure each processor has the same amount of memory.  If they have differing amounts, it can drastically impact performance.  I am pretty sure Dell publishes a guide for how to properly insert memory.  Most of the time, it is not simply filling up the DIMM slots from left to right; there is a specific sequence and order that should be used.

    Pooled VDI guests are created by having a single master image and each guest gets a differencing disk off it.  Personal VDI guests get a complete copy of an environment that is not shared with anyone else.  If clients need to make changes to their VDI guest and have it saved from one session to the next, it is generally done with personal copies.  If a client gets a generic image each time they come in, it is common to use a pooled concept.  You set them up differently within VDI.

    What sort of network connections do you have?  1 GE?  10 GE?  How much other network traffic exists on the wire?  Are the clients coming in directly over the LAN or are they connection over a VPN of some sort?

    And, finally, 'sluggish' is a rather imprecise word.  How do you define it?


    tim

    Thursday, January 03, 2013 11:44 PM