1#!/bin/sh 2 3CPUS_ONLINE=$(lscpu --online -p=cpu|grep -v -e '#') 4#use last CPU for host. Why not the first? 5#many devices tend to use cpu0 by default so 6#it tends to be busier 7HOST_AFFINITY=$(echo "${CPUS_ONLINE}"|tail -n 1) 8 9#run command on all cpus 10for cpu in $CPUS_ONLINE 11do 12 #Don't run guest and host on same CPU 13 #It actually works ok if using signalling 14 if 15 (echo "$@" | grep -e "--sleep" > /dev/null) || \ 16 test $HOST_AFFINITY '!=' $cpu 17 then 18 echo "GUEST AFFINITY $cpu" 19 "$@" --host-affinity $HOST_AFFINITY --guest-affinity $cpu 20 fi 21done 22echo "NO GUEST AFFINITY" 23"$@" --host-affinity $HOST_AFFINITY 24echo "NO AFFINITY" 25"$@" 26