diff --git a/start-win10 b/start-win10 index 274e894..aa69043 100755 --- a/start-win10 +++ b/start-win10 @@ -12,7 +12,7 @@ # - resets host isolation on VM shutdown # # define the CPUs (cores/threads) to isolate for the VM -VM_CORES='0-11,24-35' +VM_CORES='0-19,24-43' # Tip: refer to 'virsh capabilities | grep siblings' # this will show CPU topology information for the host # allows one to pick optimal layout for the VM @@ -33,14 +33,12 @@ VM_CORES='0-11,24-35' # - SMT enabled # # reduce kernel jitter -sudo sysctl vm.stat_interval=120 -sudo sysctl kernel.watchdog=0 +sudo sh -c 'sysctl vm.stat_interval=120 ; sysctl kernel.watchdog=0' # attempt to reset shielding, we want to create it with current params # and remove any existing slices from previous VM boots # we want it to be created with current params, such as possibly-changed pinned CPUs -sudo cset shield --reset --sysset=host.slice --userset=windows10.slice -sudo cset set -d windows10.slice +sudo sh -c 'cset shield --reset --sysset=host.slice --userset=windows10.slice ; cset set -d windows10.slice' # shield cores # userset slice must match the partition defined in libvirt xml, eg: @@ -52,26 +50,30 @@ sudo cset set -d windows10.slice # sudo cset shield -c $VM_CORES --sysset=host.slice --userset=windows10.slice -# setup looking glass -#sudo touch /dev/shm/looking-glass -#sudo chown jlay:kvm /dev/shm/looking-glass -#sudo chmod 660 /dev/shm/looking-glass - # start the VM virsh start windows10 -# set higher priority -QEMU_PID=$(sudo ps fauxww | awk '$0 ~ /qemu.*windows1[0]/ {print $2}') -sudo renice -20 -p ${QEMU_PID} -sudo chrt -f -p 99 ${QEMU_PID} +# determine QEMU vCPU PIDs +QEMU_PIDS=$(sudo egrep 'vcpu.*pid' /var/run/libvirt/qemu/windows10.xml | cut -d\' -f4) + +# set higher priority for vCPU PIDs +sudo renice -20 -p ${QEMU_PIDS} +# either of these attempts at real time seem to freeze on boot +# try a different kernel (not 5.8.11) +#for CPUPID in ${QEMU_PIDS}; do +## sudo chrt -f -p 99 ${CPUPID} +# sudo chrt -r -p 99 ${CPUPID} +#done echo "Waiting for windows10 VM to stop before resetting cpusets" while true; do # chill a bit sleep 10 # get vm state, check if it's off - VM_STATE=$(sudo virsh dominfo windows10 | awk '$1 ~ /State/ {print $NF}') - if [ "$VM_STATE" == 'off' ]; then + if test -f "/var/run/libvirt/qemu/windows10.xml"; then + VM_STATE="on" # doesn't do much (yet?), just here to fill a spot + else + VM_STATE="off" echo -e "windows10 VM shut down, setting cpusets back to normal\n" sudo cset shield --reset --sysset=host.slice --userset=windows10.slice exit 0