New Windows 10 VM - Unusable performance


Juzzy

Recommended Posts

Hi everyone.

 

I have recently built up a new computer in the hopes of using it as gaming capable machine / home file server.

 

I downloaded the Windows 10 ISO from Microsoft (twice, I did some troubleshooting before I have come here)

Got through the installation of Windows 10 Pro just fine, however when I actually make it into Windows, nothing but problems.

 

Often the system will not boot. I will be stuck on the Windows Logo and it will just hang. When I do get into Windows, the system is unusably slow. It may take 3-4 seconds for the start menu to appear when you click the start button.

 

The initial install appears to be fine, as soon as I start installing the virtIO drivers (tried using 1.1.30) the system slows to a halt.

 

Here are the specs I am going with.

 

Host:

CPU: i7 6700

Memory: 16gb of Corsair Vengence

HD: 2 WD 3tb NAS drives

Video Card: Onboard for Unraid and a 1070 for the guest VM

 

Guest:

CPU: 6 Cores (1, 2, 3, 5, 6, 7)

Ram: 12gb

HD size: 250gb

Video: MSI GTX 1070

System XML:

<domain type='kvm'>

  <name>Windows 10</name>

  <uuid>48ca69da-3f6f-89f5-276f-6e1a7934bf10</uuid>

  <metadata>

    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>

  </metadata>

  <memory unit='KiB'>12582912</memory>

  <currentMemory unit='KiB'>12582912</currentMemory>

  <memoryBacking>

    <nosharepages/>

    <locked/>

  </memoryBacking>

  <vcpu placement='static'>6</vcpu>

  <cputune>

    <vcpupin vcpu='0' cpuset='1'/>

    <vcpupin vcpu='1' cpuset='2'/>

    <vcpupin vcpu='2' cpuset='3'/>

    <vcpupin vcpu='3' cpuset='5'/>

    <vcpupin vcpu='4' cpuset='6'/>

    <vcpupin vcpu='5' cpuset='7'/>

  </cputune>

  <os>

    <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>

  </os>

  <features>

    <acpi/>

    <apic/>

  </features>

  <cpu mode='host-passthrough'>

    <topology sockets='1' cores='3' threads='2'/>

  </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/Windows 10/vdisk1.img'/>

      <target dev='hdc' bus='virtio'/>

      <boot order='1'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>

    </disk>

    <disk type='file' device='cdrom'>

      <driver name='qemu' type='raw'/>

      <source file='/mnt/user/isos/Win10_1607_English_x64.iso'/>

      <target dev='hda' bus='ide'/>

      <readonly/>

      <boot order='2'/>

      <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/isos/virtio-win-0.1.118-2.iso'/>

      <target dev='hdb' bus='ide'/>

      <readonly/>

      <address type='drive' controller='0' bus='0' target='0' unit='1'/>

    </disk>

    <controller type='usb' index='0' model='ich9-ehci1'>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>

    </controller>

    <controller type='usb' index='0' model='ich9-uhci1'>

      <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'>

      <master startport='2'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>

    </controller>

    <controller type='usb' index='0' model='ich9-uhci3'>

      <master startport='4'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>

    </controller>

    <controller type='pci' index='0' model='pci-root'/>

    <controller type='ide' index='0'>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>

    </controller>

    <controller type='virtio-serial' index='0'>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

    </controller>

    <interface type='bridge'>

      <mac address='52:54:00:e7:4a:98'/>

      <source bridge='br0'/>

      <model type='virtio'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

    </interface>

    <serial type='pty'>

      <target port='0'/>

    </serial>

    <console type='pty'>

      <target type='serial' port='0'/>

    </console>

    <channel type='unix'>

      <source mode='connect'/>

      <target type='virtio' name='org.qemu.guest_agent.0'/>

      <address type='virtio-serial' controller='0' bus='0' port='1'/>

    </channel>

    <input type='tablet' bus='usb'/>

    <input type='mouse' bus='ps2'/>

    <input type='keyboard' bus='ps2'/>

    <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0' keymap='en-us'>

      <listen type='address' address='0.0.0.0'/>

    </graphics>

    <video>

      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>

    </video>

    <hostdev mode='subsystem' type='pci' managed='yes'>

      <driver name='vfio'/>

      <source>

        <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>

      </source>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>

    </hostdev>

    <hostdev mode='subsystem' type='usb' managed='no'>

      <source>

        <vendor id='0x1532'/>

        <product id='0x0015'/>

      </source>

    </hostdev>

    <hostdev mode='subsystem' type='usb' managed='no'>

      <source>

        <vendor id='0x1532'/>

        <product id='0x010f'/>

      </source>

    </hostdev>

    <memballoon model='virtio'>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>

    </memballoon>

  </devices>

</domain>

 

 

This is my first time trying to use virtual machines within unraid. Any advise would be greatly appreciated.

 

I should also note, I followed through the post-install tuning guides.

Link to comment

Do you have the vdisk stored on the cache drive (ie: is the share settings for domains set to use cache:yes)?  Do you have a cache drive?

 

If you don't have a cache drive (but do have a parity disk), then performance is going to always be terrible.

 

I'm not running a cache drive at this time. Only 2 HDD - One as storage the other as a parity.

 

So from what I understand, it's going to the terrible until I put an ssd cache in the system?

Link to comment

Do you have the vdisk stored on the cache drive (ie: is the share settings for domains set to use cache:yes)?  Do you have a cache drive?

 

If you don't have a cache drive (but do have a parity disk), then performance is going to always be terrible.

 

I'm not running a cache drive at this time. Only 2 HDD - One as storage the other as a parity.

 

So from what I understand, it's going to the terrible until I put an ssd cache in the system?

Not necessarily a ssd, but any spinner or ssd as a cache drive will result in a huge spin up.

 

Writes to the parity protected array are ~4 times slower than to the cache drive.  But you can alleviate this to a certain extent by turning on turbo write (Tunable md_write_method -> reconstruct write) within Settings - Disk Settings.

Link to comment

That should fix your audio issue, you are going to want to find your Video card \ HDMI audio in your Windows registry and change the MSI from 0 to 1. You can follow the path from my screenshot but your video card \ HDMI audio might be named different.

 

Have you highlighted 2 because you have 2 cards?

I went through and found the correct name of my card, created the dword key and set the value to 1.

It did make the sound better, but still broken in the same way.

 

 

 

Edit:

 

Just to let you know, was able to resolve the issue. I did some more reading and turns out that setting the dword to 1 and then back to 0 resolved the issue.

 

Thanks a lot for the help everyone! <3

1.PNG.214d32c415d32767d4b94824fafa9cca.PNG

2.PNG.641c1a2e4023f2b3b13ae1e3a46aa6f6.PNG

Link to comment

Sorry for the confusion - you shouldn't need to create a dword so you might be able to delete that, my "MSISupport" was already there and just needed to modify it from 0 to 1. The reason why I outlined both in orange is because I believe both are related to my one video card and one of the two is the HDMI audio part of the video card that I needed to modify. Your card might be a little different as I am running a 960.

 

I could be wrong about the two I have outlined in orange however I know the first orange outline is the one I modify for my system. You can probably ignore the bottom orange outline in in the screenshot but may not hurt to take a look around.

 

If your video card HDMI audio supports MSI and it should Located the "messageSignaleInterruptProperties" I have outlined in green and then modify the "MSISupport" in the right hand side of the screenshot that is also in green from 0 to 1 and restart the VM. I did not have to create a dword as it was already there.

Capture.PNG.25ca2880840f997be18848c03e9043af.PNG

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.