Skip to content

Instantly share code, notes, and snippets.

@XReyRobert
Last active April 7, 2023 11:36
Show Gist options
  • Save XReyRobert/34c1077fd34a6bbca469e50b558b0163 to your computer and use it in GitHub Desktop.
Save XReyRobert/34c1077fd34a6bbca469e50b558b0163 to your computer and use it in GitHub Desktop.
A shell function to use/extend cpuctl with cpu ranges on macosUsage: cpuset { offline | online } <start_cpu1>-<end_cpu1> [ <start_cpu2>-<end_cpu2>... ]
# A shell function to manage multiple CPUs using cpuctl on macos
# XRR 2023
# Usage: cpuset { offline | online } <start_cpu1>-<end_cpu1> [ <start_cpu2>-<end_cpu2>... ]
cpuset() {
action=$1
shift
if [ "$action" != "offline" ] && [ "$action" != "online" ]; then
echo "Invalid action: $action"
echo "Usage: cpuset { offline | online } <start_cpu1>-<end_cpu1> [ <start_cpu2>-<end_cpu2>... ]"
return 1
fi
if [ "$#" -eq 0 ]; then
echo "No CPU range provided"
echo "Usage: cpuset { offline | online } <start_cpu1>-<end_cpu1> [ <start_cpu2>-<end_cpu2>... ]"
return 1
fi
while [ "$#" -gt 0 ]; do
range=$1
shift
if [[ ! $range =~ ^[0-9]+-[0-9]+$ ]]; then
echo "Invalid range format: $range"
echo "Usage: cpuset { offline | online } <start_cpu1>-<end_cpu1> [ <start_cpu2>-<end_cpu2>... ]"
return 1
fi
start_cpu=$(echo $range | cut -d '-' -f 1)
end_cpu=$(echo $range | cut -d '-' -f 2)
for cpu in $(seq $start_cpu $end_cpu); do
sudo cpuctl $action $cpu
done
done
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment