For hugepages I allocate the RAM in grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt default_hugepagesz=1G hugepagesz=1G hugepages=12 nohz_full=0-5 rcu_nocbs=0-5"
If you have plenty of RAM it will give you less headaches.
I set nohz_full & rcu_nocbs on the cores I pass through to the Windows VM to make them tickless. Some guides mention using isolcpus but that is now deprecated in the kernel.
This VFIO performance thread was also helpful.
Your libvirt XML does not seem to be using a virtio-scsi disk controller - this is needed for iothreads to work. You need to add a scsi controller in virt-manager & set your disks to use it.