code cleanup

Upon looking at it today, two loops seemed repetitive.
This commit is contained in:
Caffarius 2019-08-01 20:32:06 -04:00
parent 3ccc7b2f71
commit 3a69b7356c
1 changed files with 32 additions and 44 deletions

76
smt.sh
View File

@ -1,5 +1,5 @@
#!/bin/bash
## Copyright © 2018 Bret Human
## Copyright © 2018-2019 Bret Human
## https://cynicaloptimist.me/
##
## Documentation at:
@ -9,61 +9,49 @@
## For questions or comments write:
## info@cynicaloptimist.me
#
# Try your best to control SMT on Ryzen CPUs.
# Try your best to control SMT on Ryzen CPUs (and maybe others?)
# Usage: ./smt.sh (enable|disable|status)
num_cores=`lscpu | grep "CPU(s):" | grep -v "," | grep -v "-" | cut -d: -f2 | awk '{print $1}'`
num_procs=`nproc`
coreLoop() {
i="1"
while [ "${i}" -lt "${num_cores}" ]; do
echo "$1" > /sys/devices/system/cpu/cpu${i}/online
i=$[ $i + 2 ]
done
echo "Done."
return 0
}
disable() {
if [ "${num_procs}" -lt "${num_cores}" ]; then
echo "SMT has already been disabled!"
else
echo -n "Disabling SMT: "
i="1"
while [ "${i}" -lt "${num_cores}" ]; do
echo "0" > /sys/devices/system/cpu/cpu${i}/online
i=$[ $i + 2 ]
done
unset i
echo "Done."
return 0
fi
return 1
if [ "${num_procs}" -lt "${num_cores}" ]; then
echo "SMT has already been disabled!"
return 1
else
echo -n "Disabling SMT: "
coreLoop 0
fi
}
enable() {
if [ "${num_procs}" -eq "${num_cores}" ]; then
echo "SMT has already been enabled!"
else
echo -n "Enabling SMT: "
i="1"
while [ "${i}" -lt "${num_cores}" ]; do
echo "1" > /sys/devices/system/cpu/cpu${i}/online
i=$[ $i + 2 ]
done
unset i
echo "Done."
return 0
fi
return 1
if [ "${num_procs}" -eq "${num_cores}" ]; then
echo "SMT has already been enabled!"
return 1
else
echo -n "Enabling SMT: "
coreLoop 1
fi
}
status() {
cat /proc/cpuinfo |egrep "processor|physical id|core id" | sed 's/^processor/\nprocessor/g'
cat /proc/cpuinfo |egrep "processor|physical id|core id" | sed 's/^processor/\nprocessor/g'
}
case "$1" in
disable)
disable
;;
enable)
enable
;;
status)
status
;;
*)
echo " Usage: ./smt.sh (disable | enable | status)"
;;
esac
disable) disable;;
enable) enable;;
status) status;;
*) echo " Usage: ./smt.sh (disable | enable | status)";;
esac