I struggled with the rare (but very annoying) crackles and finally I don't have them anymore with emulated audio.
I use cpu isolation and keep 2 CPU threads for host out of 8. I use MSI as per alex's VFIO blog. I pass following env to qemu: QEMU_AUDIO_DRV=pa QEMU_PA_SAMPLES=1024 PULSE_COOKIE=/home/ivan/.config/pulse/cookie PULSE_SERVER=unix:/home/ivan/.pulse_server I switched qemu to -soundhw ac97 I have hv_time in cpu string: host,kvm=off,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv-vendor-id=servo,hv-vpindex,hv-reset,hv-runtime,hv-crash I have following rtc settings: -rtc base=utc,driftfix=slew -no-hpet -global kvm-pit.lost_tick_policy=discard # cd .pulse; grep -r ivan . ./default.pa:load-module module-native-protocol-unix srbchannel=1 socket=/home/ivan/.pulse_server ./client.conf:default-server = unix:/home/ivan/.pulse_server pulse/daemon.conf: realtime-scheduling = yes # values which seem to work for me default-fragments = 2 default-fragment-size-msec = 125 enable-shm = yes shm-size-bytes = 0 realtime-priority = 5 On Fri, Jun 10, 2016 at 6:15 AM Abdulla Bubshait <abdulla.bubsh...@gmail.com> wrote: > The CPU isolation and interrupt reduction for the guest CPUs seems to > have greatly reduced the audio problems. > > Thanks for that. > > On Thu, Jun 9, 2016 at 12:43 PM, Milos Kaurin <milos.kau...@gmail.com> > wrote: > > Yes, this keeps coming up now and again on this list. > > > > My solution was: > > > > 1. Buy a dedicated PCIE sound card > > 2. Pass it through to the guest > > 3. Route audio: mobo soundcard > guest soundcard > > > > In essence, the always-on guest would handle audio, but I would still > have > > crackles (rarely), especially from the web browsers (host & guest). Games > > not so much. > > > > To fix crackles, I did the following: > > 1. In the kernel cmdline: Use hugepages, 16x1GB for the guest (16 for the > > host, 32 total) > > 2. In the kernel cmdline: Use cpuisol (6 cores for the gues, 2 for the > host) > > 3. In the kernel cmdline: Use nohz_full and rcu_nocbs for the guest cores > > 4. In the virt XML: Use cputune, hugepages, cpu mode=host-passthrough > with > > the correct topology > > 5. In the virt XML: iothreadpin and emulatorpin for the 2 host CPUs > > 6. In the virt XML: Use virtio wherever possible (net, block devices) > > > > I think I covered everything. If anyone else has any other tips, please > let > > me know. > > > > > > > > Appenix > > > > > > My /etc/default/grub: > > > > GRUB_CMDLINE_LINUX="rhgb quiet intel_iommu=on iommu=pt kvm.ignore_msrs=1 > > rd.driver.pre=vfio-pci hugepagesz=1G default_hugepagesz=1G hugepages=16 > > nohz_full=1,2,3,5,6,7 rcu_nocbs=1,2,3,5,6,7 isolcpus=1,2,3,5,6,7" > > > > > > > > My XML: > > > > <domain type='kvm'> > > <name>Win10</name> > > <uuid>4bb72e5b-c886-425f-8280-b69755ebf054</uuid> > > <memory unit='KiB'>16777216</memory> > > <currentMemory unit='KiB'>16777216</currentMemory> > > <memoryBacking> > > <hugepages/> > > </memoryBacking> > > <vcpu placement='static'>6</vcpu> > > <iothreads>2</iothreads> > > <cputune> > > <vcpupin vcpu='0' cpuset='1'/> > > <vcpupin vcpu='1' cpuset='5'/> > > <vcpupin vcpu='2' cpuset='2'/> > > <vcpupin vcpu='3' cpuset='6'/> > > <vcpupin vcpu='4' cpuset='3'/> > > <vcpupin vcpu='5' cpuset='7'/> > > <emulatorpin cpuset='0,4'/> > > <iothreadpin iothread='1' cpuset='0'/> > > <iothreadpin iothread='2' cpuset='4'/> > > </cputune> > > <os> > > <type arch='x86_64' machine='pc-i440fx-2.4'>hvm</type> > > <loader readonly='yes' > > type='pflash'>/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd</loader> > > <nvram>/var/lib/libvirt/qemu/nvram/Win10_VARS.fd</nvram> > > </os> > > <features> > > <acpi/> > > <apic/> > > <kvm> > > <hidden state='on'/> > > </kvm> > > <vmport state='off'/> > > </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> > > <pm> > > <suspend-to-mem enabled='no'/> > > <suspend-to-disk enabled='no'/> > > </pm> > > <devices> > > <emulator>/usr/bin/qemu-kvm</emulator> > > <disk type='block' device='disk'> > > <driver name='qemu' type='raw' cache='none' io='native'/> > > <source dev='/dev/sdb'/> > > <target dev='vda' bus='virtio'/> > > <boot order='2'/> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x09' > > function='0x0'/> > > </disk> > > <controller type='pci' index='0' model='pci-root'/> > > <controller type='scsi' index='0' model='virtio-scsi'> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x05' > > function='0x0'/> > > </controller> > > <controller type='usb' index='0' model='none'/> > > <interface type='bridge'> > > <mac address='52:54:00:3e:c8:03'/> > > <source bridge='br0'/> > > <model type='virtio'/> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x03' > > function='0x0'/> > > </interface> > > <hostdev mode='subsystem' type='pci' managed='yes'> > > <source> > > <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> > > </source> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' > > function='0x0'/> > > </hostdev> > > <hostdev mode='subsystem' type='pci' managed='yes'> > > <source> > > <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/> > > </source> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' > > function='0x0'/> > > </hostdev> > > <hostdev mode='subsystem' type='pci' managed='yes'> > > <source> > > <address domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> > > </source> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x02' > > function='0x0'/> > > </hostdev> > > <hostdev mode='subsystem' type='pci' managed='yes'> > > <source> > > <address domain='0x0000' bus='0x06' slot='0x00' function='0x0'/> > > </source> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x04' > > function='0x0'/> > > </hostdev> > > <memballoon model='none'/> > > </devices> > > </domain> > > > > > > > > _______________________________________________ > vfio-users mailing list > vfio-users@redhat.com > https://www.redhat.com/mailman/listinfo/vfio-users >
_______________________________________________ vfio-users mailing list vfio-users@redhat.com https://www.redhat.com/mailman/listinfo/vfio-users