Need suggestions for improving performance of Windows 7 VM


Recommended Posts

I connect to my Windows 7 VM through Remote Desktop.  The screen redraws and youtube videos are very choppy, scrolling in a browser is also not smooth at all.  My specs:

Unraid 6.2 Pro

i5-4590 3.3 GHz CPU

16Gigs Ram

GeForce GT 730 passthrough

 

Is this an expected performance?  Any help is much appreciated. 

Here's the VM spec:

 

<domain type='kvm' id='38'>
  <name>Win7Vm</name>
  <uuid>55263123-e4df-89be-493f-50f37dccb4f6</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>17301504</memory>
  <currentMemory unit='KiB'>17301504</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0'/>
    <vcpupin vcpu='1' cpuset='1'/>
    <vcpupin vcpu='2' cpuset='2'/>
    <vcpupin vcpu='3' cpuset='3'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.3'>hvm</type>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/user/domains/Win7Vm/vdisk1.img'/>
      <backingStore/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <alias name='virtio-disk2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/VM ISO/Win_7.iso'/>
      <backingStore/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <boot order='2'/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/VM ISO/virtio-win-0.1.102.iso'/>
      <backingStore/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <alias name='ide0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:a7:bb:47'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-Win7Vm/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <hostdev mode='subsystem' type='pci' managed='yes' xvga='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </hostdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </memballoon>
  </devices>
</domain>

Link to comment

Windows Remote Desktop doesn't use the GPU, it can render a few things like the mouse on the client but for example videos or scrolling is rendered on the host which causes the lagging/low fps, but i think there a few alternatives that can use the GPU. Steam in-home streaming might work.

Link to comment

Windows Remote Desktop doesn't use the GPU, it can render a few things like the mouse on the client but for example videos or scrolling is rendered on the host which causes the lagging/low fps, but i think there a few alternatives that can use the GPU. Steam in-home streaming might work.

 

I have been under the impression since I started using unRAID that RDP is the best way to access VMs.  It is what they use for gaming on unRAID boxes, so how can this be?

Link to comment

RDP is not intended/performance acceptable for USING a VM, especially in a heavy video environment such as watching movies, tv shows, youtube, gaming, etc. RDP is useful for ACCESSING VM's for things such as configuration changes, simple installing of programs, moving around of files, etc.

 

You need a dedicated video card and direct video access to actually utilize said VM in the manner in which you are speaking of. This is accomplished via outputting video from the GPU directly, NOT connecting via RDP. I have a couple of VM's which I have HDMI cables plugged in to and routed through my home to various TV's and receivers for this. I also shoot the USB over ethernet for a mouse/keyboard connection.

 

That being said, steam in-home streaming is also an option, but a little fussy at times if you are looking for a direct desktop stream, not just game stream.

Link to comment

RDP is not intended/performance acceptable for USING a VM, especially in a heavy video environment such as watching movies, tv shows, youtube, gaming, etc. RDP is useful for ACCESSING VM's for things such as configuration changes, simple installing of programs, moving around of files, etc.

 

You need a dedicated video card and direct video access to actually utilize said VM in the manner in which you are speaking of. This is accomplished via outputting video from the GPU directly, NOT connecting via RDP. I have a couple of VM's which I have HDMI cables plugged in to and routed through my home to various TV's and receivers for this. I also shoot the USB over ethernet for a mouse/keyboard connection.

 

That being said, steam in-home streaming is also an option, but a little fussy at times if you are looking for a direct desktop stream, not just game stream.

 

I think some people added a CMD file as a game to make it stream the desktop, it is not perfect but it should work.

Link to comment

That makes sense.. I have pretty good results streaming video through RDP but I am surprised to find out it doesn't render via GPU.  Can you answer this though:  I use my Windows VM to run handbrake and down some video encoding for my iPod.  It runs super quick on there with two cores assigned, even better than my laptop.  How is this is if it is not using the GPU?  Is it because Handbrake uses the CPU instead?

Link to comment

Gotcha.. After doing a little research, its too bad something like RemoteFX couldn't be be made to work on Windows 10.  (https://technet.microsoft.com/en-us/library/ff817578%28v=ws.10%29.aspx?f=255&MSPPError=-2147217396)

 

Over on one of the forums where the guys are using SETI@home, I read that they can start their software that ustilizes the GPU via VNC, then start the RDP client and the application continues using the GPU rather than the emulated adapter.  I might test this out a little later, not that I would have a whole lot of use for it.

 

Sorry to hijack the thread anyways 

 

 

EDIT - I did find the RemoteFX in the Group Policy Editor of my Windows 7 Ult VM, but it may need to be run on Hyper-V.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.