coppit

Community Developer
  • Posts

    498
  • Joined

  • Last visited

Everything posted by coppit

  1. I thought I would update this thread since I've extended this build a bit. For a while I was running a Xen VM as my PVR. But once KVM became preferred, I switched over. Then I doubled down on virtualization, adding two GeForce GTX 960 so that I could set up two gaming VMs. Here's the new hardware: Two EVGA GeForce GTX 960 2GB GAMING ACX 2.0+ AOC 2460G5. This monitor is 3D Vision capable, or g-sync can be turned on 2nd monitor for gaming Cheapo D-Sub monitor for the onboard graphics to manage unraid as needed Two IO Crest 4 Port SATA III PCI-e 2.0 x1 Controller Card Marvell Non-Raid with Low Profile Bracket SI-PEX40064. Sadly, I had to replace the SAS cards because I needed the slots for the GPUs. Corsair Force LE 2.5" 960GB SATA III TLC Internal Solid State Drive (SSD) CSSD-F960GBLEB. This replaces the two Samsung 840 EVO SSDs I'm running Windows 10 in the two gaming VMs. KVM XML files attached. Installation of the OS with virtio driver support was challenging. Be sure to use the temporary disk method described in the wiki, and also apply the various post-install tuning steps. Initially, I had a lot of trouble with audio crackling and abysmal gaming performance. I passed through the USB3 controllers, which seemed to help. (See research on DPC latency, latencymon, etc.) After lots of fiddling, I noticed that only one CPU config got rid of the audio problems and gave good enough performance. Lots of people advise using isolcpus in the kernel boot params, and computing the hyperthread-paired virtual CPUs to dedicate to the VM. Oddly, the only thing that worked for me is to pass half of each hyperthreaded pair to the VM. So since my pairs are 0 and 4, 1 and 5, 2 and 6, and 3 and 7, I pass vCPUs 1,2,3 to one VM, and vCPUs 5,6,7 to the other gaming VM. For the GPUs to pass through, I had to set "pcie_acs_override=downstream" in the kernel params for this motherboard. For the PVM VM, I pass vCPUs 4,5. I leave vCPU 0 for UNRAID and docker containers. For its OS disk, I previously was passing through an SSD. Since the new standard is to have a "domains" folder on the cache drive with .img files, I went with that. That's partly why I replaced the two smaller SSDs with one bigger one. I'm still passing through a 1 TB hard drive for the PVR files. I may revisit this CPU pairing issue again later. Recently at work (and on Xen), we noticed that even when passing paired vCPUs to the VM, the OS wouldn't detect them as paired, and gaming performance would suffer. Maybe something similar is happening here? Also, I feel like there are CPU inefficiencies with Windows VM in KVM. When the VMs report no CPU usage, in the UNRAID host it reports 30% cpu usage. I fiddled with all kinds of things but couldn't resolve this issue. With 2 gaming VMs, a PVR VM, and 7 docker containers (including one with 4 Minecraft servers), this machine is stretched to the limit. I investigated buying better hardware, but honestly I was disappointed that CPUs haven't advanced more since I did my original build. I could go server class, but I like this motherboard and case a lot. Anyway, the current state is that we can play OverWatch on two VMs at the same time. We can't really have anything CPU-intensive running in the background, and occasionally the computers freeze for a few seconds. But generally it's a smooth experience. gaming1.xml.txt pvr.xml.txt gaming2.xml.txt
  2. Log into your server, and run: USERNAME='<username from your conf file>' PASSWORD='<password from your conf file>' DOMAINS='<domains from your conf file>' curl -S -k --user-agent "coppit docker no-ip/.1 $USERNAME" -u "$USERNAME:$PASSWORD" "https://dynupdate.no-ip.com/nic/update?hostname=$DOMAINS" If that works, then check your conf file for correctness, and see if there are any other errors in the container logs. If you can't find any problem, I can add more logging so that we can figure it out.
  3. You've somehow injected some bogus characters at the top of the file, and perhaps elsewhere. I try to scrub out windows line endings, but I'm not sure what to do about those unicode (?) characters. Log into your server and run "nano noip.conf". If there are any characters before the "#", delete them. Then restart your container and see if that clears up the problem.
  4. If I select "Red Hat VirtIO SCSI Disk Device" and try to install the viostor driver, I get "The folder you specified doesn't contain a compatible software driver for your device."
  5. Yeah. I'm not suggesting I'd use two drivers. How do I update the driver in device manager? Windows just keeps telling me that I'm already using the best driver for my device.
  6. I'm trying to debug why 20% of 3 CPUs is being used in the host, while the guest CPU is idle. This is for a Windows 10 guest. I ran across this page that seems to indicate that we can use either viostor or vioscsi drivers. I blindly installed both. Elsewhere I saw that viostor performed better, but had fewer features. I'd like to try switching virtio driver to see what that does to my host CPU usage. Does this make sense, or am I on a wild goose chase? Next question: How do I persuade Windows to install the other drivers? I'm afraid that if I uninstall the existing drivers I won't be able to boot the OS.
  7. Here's a command to print your socket info, including which core and which ones are hyperthreaded together: <cpus num='8'> <cpu id='0' socket_id='0' core_id='0' siblings='0,4'/> <cpu id='1' socket_id='0' core_id='1' siblings='1,5'/> <cpu id='2' socket_id='0' core_id='2' siblings='2,6'/> <cpu id='3' socket_id='0' core_id='3' siblings='3,7'/> <cpu id='4' socket_id='0' core_id='0' siblings='0,4'/> <cpu id='5' socket_id='0' core_id='1' siblings='1,5'/> <cpu id='6' socket_id='0' core_id='2' siblings='2,6'/> <cpu id='7' socket_id='0' core_id='3' siblings='3,7'/> </cpus> Here's a command to see what vcpus are being used by your VM. In this example, I have my VM configured for emulatorpin on 1,5 and vcpu pinning for 2,6,3,7. So you can see that 2,6,3,7 have more CPU usage. (Sadly, 200% total CPU for an idle system, after login. ) $ ps -mo pid,tid,%cpu,psr,cmd --sort=+psr -p `pgrep qemu` PID TID %CPU PSR CMD 1428 - 184 - /usr/bin/qemu-system-x86_64 -name Windows 10 -machine pc-i440fx-2.5,accel=kvm,usb=off,me - 1428 9.4 1 - - 1433 0.0 5 - - 1435 43.3 2 - - 1436 43.7 6 - - 1437 44.1 3 - - 1438 43.6 7 - - 13620 0.0 5 - - 19283 0.0 1 -
  8. This reddit thread covers network lag, but some FPS issues as well. One of the things that seems to have helped me is GameBoostHD. Perhaps it's just a placebo, but it seems like I have fewer FPS dips than I had before.
  9. Same here. I turned down some settings in Overwatch and now I can play 2 VMs at the same time, at an average of ~40 FPS. Very rarely the FPS will drop down to ~20, or things "lock up" for 5 seconds. It's good enough.
  10. It's so simple, it's hard to imagine how it could stop working, as long as the server side of their service keeps going. I noticed this at work... I need a pithy way to capture it... Something like "Mo' code, Mo' problems". The idea is that every bit of complicated code has cost that is higher than it seems. So if you find yourself writing complicated code, you're going to regret it later. KISS principle, I guess.
  11. The container doesn't support monitoring lots of folders and running different scripts. I would recommend simply running multiple containers which different configurations. They're very lightweight. Just point each container to each subdir for the input and output. That said, the default config handles different input types already, putting them into subdirs in the output dir. Did you try it? It only occasionally gets confused and renames a tv show to a movie or vice versa. If you do want to rewrite filebot.sh, what you can do is have multiple commands run in each of the subdirs of the parent input dir. e.g. if the monitor sees a change in input/tv, it will run your filebot.sh, which will process input/tv, input/movies, and all the other subdirs. (Just specify the parent input dir as the one to be monitored.) If you go this route, be sure to leave VERSION as it is in your script. That way if I ever update the default script, it will give you an error so that you can see if the new changes need to be reflected in your script.
  12. I think you meant /mnt/user. You might consider using /mnt/user0 if you have a cache drive. That will bypass the cache drive, which might fill up if you're using it to process a lot of files. BTW, I don't recommend blindly running FileBot on all your files. It can make mistakes that are a PITA to fix.
  13. FYI, I added a link to the template. The web UI is at http://tower:3389/ To be honest I'm kinda shocked that anyone is using the UI version. I never figured out how to get it to save my settings, which was a deal breaker for me. I'm not going to re-enter my crazy formatting string every time I use the thing.
  14. I just updated it to 4.7.2. Check it out and see if it works well for you.
  15. Did you recently copy your appdata files to a different location? I had to: docker exec -it MineOS bash chown -R minecraft:minecraft /var/games/minecraft/* exit
  16. Upgrading to rc3 seems to have fixed it. I did that through the plugins UI, avoiding the VM tab. I had to kill some libvirt processes during UI reboot, but it came back up clean. Yay!
  17. I had a disk problem a couple of weeks ago. But today the power glitched, and now my server has the exact same problem as you. I really wish the web UI was multithreaded. Once I touch the dashboard or the VM tab, the entire thing hangs. Then I tried using the powerdown script, but it hangs trying to stop libvirt. In my syslog I see this sort of thing: Aug 4 18:50:30 storage root: sh: /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/dockerconfig.php: No such file or directory Aug 4 18:50:30 storage root: sh: /usr/local/emhttp/plugins/dynamix.vm.manager/scripts/libvirtconfig.php: No such file or directory My console has this message: /usr/local/emhttp/plugins/dynamix.vm.manager/scripts/libvirt_init: No such file or directory I'm running 6.2.0 rc 2. This feels like a bad update to me, or maybe my flash drive got corrupted. I logged into the server and the files are indeed missing. I'm going to try looking for any plugin updates, then try copying the latest release manually into my flash drive.
  18. In desperation I put /dev/disk/by-id/ata-ATAPI_iHAS424_B_3524253_248115500337 into my OS ISO field, and was able to use the drive in Windows. That was enough to install the game.
  19. I'm passing through a GTX 960 to a Windows 10 VM. I tried a lot of things to reduce the latency, but not much has helped so far. When I run DPC Latecy Checker, it's consistently red. When I run LatencyMon, it says USBPORT.SYS is a problem. I ran across this idea from a forum. Go to Power Options -> High Performance -> Change plan settings -> Change advanced power settings -> USB -> USB selective suspect setting. After disabling this, I'm now getting yellow 1/3 of the time in DPC Latency Checker. Your mileage may vary. There are lots of causes, so this might not help everyone. I'm passing through a USB 3.0 controller, and I have a headset and wireless mouse connected to it. Be aware that if you have C States and other power management options enabled in your BIOS, the latency measurements will be off. When I play a game to stress the system, 1/10 of the time I get green bars in DPC Latency Checker. (And yes, I did try disabling all the power saving stuff in BIOS, and it didn't help.)
  20. Hi all, I'm trying to add a DVD burner to my Windows VM. Looking in system devices, I see this: [9:0:0:0] cd/dvd ATAPI iHAS424 B GL18 /dev/sr0 Is this the right thing to add to the XML? <controller type='scsi' index='0' model='virtio-scsi'/> <hostdev mode='subsystem' type='scsi'> <source> <adapter name='scsi_host9'/> <address type='scsi' bus='0' target='0' unit='0'/> </source> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </hostdev> I tried that, but my VM won't get past the BIOS screen. Below is my complete XML. <domain type='kvm' id='7'> <name>Windows 10</name> <uuid>354bbc59-904e-4d45-6562-6d3fcb7248ce</uuid> <metadata> <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/> </metadata> <memory unit='KiB'>8388608</memory> <currentMemory unit='KiB'>8388608</currentMemory> <memoryBacking> <nosharepages/> <locked/> </memoryBacking> <vcpu placement='static'>3</vcpu> <cputune> <vcpupin vcpu='0' cpuset='3'/> <vcpupin vcpu='1' cpuset='6'/> <vcpupin vcpu='2' cpuset='7'/> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader> <nvram>/etc/libvirt/qemu/nvram/354bbc59-904e-4d45-6562-6d3fcb7248ce_VARS-pure-efi.fd</nvram> </os> <features> <acpi/> <apic/> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> <vendor id='none'/> </hyperv> </features> <cpu mode='host-passthrough'> <topology sockets='1' cores='3' threads='1'/> </cpu> <clock offset='localtime'> <timer name='hypervclock' present='yes'/> <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 - Christopher/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='disk'> <driver name='qemu' type='raw' cache='writeback'/> <source file='/mnt/user/domains/Windows 10 - Christopher/vdisk2.img'/> <backingStore/> <target dev='hdd' bus='virtio'/> <alias name='virtio-disk3'/> <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/virtio-win-0.1.118-2.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:1c:e2:56'/> <source bridge='br0'/> <target dev='vnet2'/> <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/2'/> <target port='0'/> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/2'> <source path='/dev/pts/2'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-Windows 10 - Christopher/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <hostdev mode='subsystem' type='pci' managed='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='0x06' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x09' slot='0x00' function='0x0'/> </source> <alias name='hostdev2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </hostdev> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> </memballoon> </devices> </domain>
  21. Okay, I tried a number of things, and now I can play 2 games at a time with 3 CPUs each. I added the extra vCPU because Overwatch kinda has trouble with just 2 cores. No audio crackling, but occasionally the audio drops for about 5 seconds. Graphics aren't perfect, but playable. I did a number of things, and am not sure what might have helped. DPC delays are still high. CPU load is 80% total for 3 VMs, versus maybe 15% total in the VMs. Before I started fiddling the total host CPU was around 150%. These aren't very scientific numbers, BTW. - Switched clocks in all my VMs. bcdedit /set {default} USEPLATFORMCLOCK on. - Enable hyper-v in all the VMs, including Windows 7. - Uninstalled VirtIO Balloon driver, since I don't plan on overprovisioning the memory. I figure it's just going to generate interrupts... Does anyone know when it's safe to uninstall the Serial driver?
  22. Hi all, I thought I'd share some notes from my experiments. First, my system at the time of these notes: AsRock Z77 Intel® Xeon® CPU E3-1245 V2 @ 3.40GHz (8 cores with hyperthreading) 32 GB of RAM Unraid 6.2RC2 1 Windows 10 VM, 1 Windows 7 VM, 5 or so Docker containers. GTX 960 being passed through to the Win10 VM Supermicro MV8 controller First, the initial setup: - My motherboard put the disk controller and GPU on the same IOMMU group. To fix it, I enabled "Enable PCIe ACS Override" in Settings -> VM Manager - Initially I used the VM config to pass the keyboard and mouse to the VM. But the mouse was periodically pausing for 1-2 seconds. Very annoying. USB passthrough solved it. - Graphics seemed choppy, like a low frame rate. Enabling MSI interrupts seemed to help. With this setup, I had audio "crackling" listening to youtube. I used the dpc latency tool, and it was all red. It seemed like the more CPUs, the higher the latecy. I started out with 3 cpus. (2 hyperthread-paired, plus one more.) Dropping down to one hyperthread pair helped, and dropping down to one VCPU helped the most. (All yellow, some green.) Audio "crackling" through my USB headset was also better, but still slightly noticable. Passing through the USB controller solved almost all the audio problems. Boot time was also noticeably faster on my SSD, without the spinner pausing. (10 seconds to boot instead of 30.) DPC latency started as green/yellow, with spikes up to red. With this setup, I was able to play Overwatch and it seemed as good as bare metal. I didn't bother passing through both HDMI video and audio. It didn't seem to matter. Launching a VM that runs on other cores caused intermittent red. This made me think that KVM emulation was stealing CPU cycles, so I isolated the CPUs. isolcpus=1,2,3,5,6,7 made it much worse -- ~8000 microseconds. Pairing CPUs didn't help. I wonder if only leaving 2 cores for unraid causes the usb device sharing to have a harder time? After reverting isolcpus, I noticed that if I play an mpg, the latency drops to under 1000 microseconds. If I stop it, latency spikes up to 4000 microseconds. Maybe that's the performance management of the CPU from the host? I didn't tweak anything with the "Tips and Tweaks" plugin -- so my scaling governor wasn't set for "performance". I've since changed that, but I haven't re-verified this behavior. I've also pushed my luck and installed a 2nd GPU, replacing my Supermicro MV8 controller with a cheapo PCI Express 2.0 x1 one. My DPC delays are back into all-red territory, so I have some more experimentation to do. I'm suspicious of the high qemu host CPU usage when the VM is idle. Basically this is eating up 2 cores. I've seen some things online that indicate that Windows interrupt processing could be causing problems, which would coincide with the crackling audio and high DPC delays that I'm seeing again with this setup. For folks with more cores than me, pushing the KVM workload to isolated cores might be working for you, but I don't have enough cores to do that. I'm working with half-baked theories here, so any input is welcome...
  23. Is this the method that is now implemented at the bottom of the VM "edit" page in Unraid 6.2? I'm running RC2, and my USB headset has "crackling" audio. When I pass through the controller it doesn't have this problem.
  24. Never heard of it. Another oddity that was fixed by starting clean: QEMU guest tools installed properly. Before it was failing half-way through.
  25. Ouch. That does sound bad. Yes, in theory. But SSDs being as fast as they are, I doubt passthrough will make a noticeable difference. Seems like with 6.2, LT is defaulting to putting vdisk images on the cache drive. I'm going to try going with the flow on this one.