aboutsummaryrefslogtreecommitdiff
path: root/etc/hyperthreading.sh
diff options
context:
space:
mode:
Diffstat (limited to 'etc/hyperthreading.sh')
-rwxr-xr-xetc/hyperthreading.sh24
1 files changed, 24 insertions, 0 deletions
diff --git a/etc/hyperthreading.sh b/etc/hyperthreading.sh
new file mode 100755
index 000000000..82603c5a3
--- /dev/null
+++ b/etc/hyperthreading.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+case $1 in
+ on)
+ for f in "/sys/devices/system/cpu/cpu"[0-9]*/online; do
+ echo 1 > "$f"
+ done
+ ;;
+ off)
+ cores=""
+ for cpu in "/sys/devices/system/cpu/cpu"[0-9]* ; do
+ if grep -vq '^1$' "$cpu/online" 2>/dev/null; then
+ continue
+ fi
+ coreid=$(cat "$cpu/topology/core_id")
+ if echo "$cores" | grep -- "$coreid" ; then
+ echo 0 > "$cpu/online"
+ fi
+ cores=$(printf "$cores\n$coreid")
+ done
+ ;;
+ *) echo "USAGE: hyperthreading.sh <on|off>"
+esac