#!/bin/bash set -x # Load Variables source "/etc/libvirt/hooks/kvm.conf" # Unmount the Windows drive umount $WIN || /bin/true # Stop LightDM systemctl stop lightdm.service sleep 2 # Calculate number of hugepages to allocate from memory (in MB) HUGEPAGES="$(($MEMORY/$(($(grep Hugepagesize /proc/meminfo | awk '{print $2}')/1024))))" echo "Allocating hugepages..." echo $HUGEPAGES > /proc/sys/vm/nr_hugepages ALLOC_PAGES=$(cat /proc/sys/vm/nr_hugepages) TRIES=0 while (( $ALLOC_PAGES != $HUGEPAGES && $TRIES < 1000 )) do echo 1 > /proc/sys/vm/compact_memory ## defrag ram echo $HUGEPAGES > /proc/sys/vm/nr_hugepages ALLOC_PAGES=$(cat /proc/sys/vm/nr_hugepages) echo "Succesfully allocated $ALLOC_PAGES / $HUGEPAGES" let TRIES+=1 done if [ "$ALLOC_PAGES" -ne "$HUGEPAGES" ] then echo "Not able to allocate all hugepages. Reverting..." echo 0 > /proc/sys/vm/nr_hugepages exit 1 fi # Unload all Nvidia drivers modprobe -r nvidia_drm modprobe -r nvidia_modeset modprobe -r nvidia_uvm modprobe -r nvidia # Unbind the GPU from display driver virsh nodedev-detach $VIRSH_GPU_VIDEO virsh nodedev-detach $VIRSH_GPU_AUDIO # Load VFIO kernel modules modprobe vfio modprobe vfio_pci modprobe vfio_iommu_type1 # Create looking glass shm systemd-tmpfiles --create /etc/tmpfiles.d/10-looking-glass.conf # Enable CPU governor performance mode cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "performance" > $file; done cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # Isolate host systemctl set-property --runtime -- user.slice AllowedCPUs=12,13,14,15 systemctl set-property --runtime -- system.slice AllowedCPUs=12,13,14,15 systemctl set-property --runtime -- init.scope AllowedCPUs=12,13,14,15