#!/usr/bin/bash

ht_virt_cores() {
  grep -H , /sys/devices/system/cpu/cpu*/topology/thread_siblings_list \
    | cut -d, -f2 | sort -n -u
}

if [ "$1" = "show" ]; then
  grep -H . /sys/devices/system/cpu/cpu*/topology/thread_siblings_list \
    | sort -n -t ',' -k 2 -u
elif [ "$1" = "disable" ]; then
  for i in `ht_virt_cores`; do
    echo "Disabling logical HT core $i."
    echo 0 > /sys/devices/system/cpu/cpu${i}/online
  done
elif [ "$1" = "enable" ]; then
  for i in `ht_virt_cores`; do
    echo "Enabling logical HT core $i."
    echo 1 > /sys/devices/system/cpu/cpu${i}/online
  done
else
  echo "Usage: $0 [show|disable|enable]"
fi
