Időnként az Intel Hyper-Threading (HT) módot ki kell kapcsolni a rendszeren. A Linux támogatja a processzor hotplug-ot. Nem kell újraindítanod a gépet, kinyitni a BIOS/UEFI-t és kézzel kikapcsolni a HT-t. Ehelyett szoftverből kikapcsolhatod a HT cpu-kat időlegesen, Linux alól, menet közben.
Nézd meg a processzorok listáját. A magok és processzorok közötti kapcsolatról láthatsz részleteket. Figyeld meg a CPU és CORE oszlopokat.
lscpu --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
0 0 0 0 0:0:0:0 yes 3200,0000 800,0000
1 0 0 0 0:0:0:0 yes 3200,0000 800,0000
2 0 0 1 1:1:1:0 yes 3200,0000 800,0000
3 0 0 1 1:1:1:0 yes 3200,0000 800,0000
Egy darab cpu kikapcsolása. A művelethez root jogok szükségesek.
echo 0 > /sys/devices/system/cpu/cpu2/online
Egy egysoros script-el kikapcsolhatod az összes HT processzort. A művelethez root jogok szükségesek.
for i in $(cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list | awk -F "[,-]" '{ print $2; }' | tr ',' '\n' | sort -un)
do
echo 0 > /sys/devices/system/cpu/cpu$i/online
done
Nézzük meg a változásokat.
dmesg | grep CPU
...
[439975.285834] IRQ 26: no longer affine to CPU1
[439975.287095] smpboot: CPU 1 is now offline
[439975.301424] IRQ 30: no longer affine to CPU3
[439975.301437] IRQ 32: no longer affine to CPU3
[439975.302453] smpboot: CPU 3 is now offline
lscpu --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
0 0 0 0 0:0:0:0 yes 3200,0000 800,0000
1 - - - ::: no 3200,0000 800,0000
2 0 0 1 1:1:1:0 yes 3200,0000 800,0000
3 - - - ::: no 3200,0000 800,0000
A következő parancs az összes processzort visszakapcsolja. A művelethez root jogok szükségesek.
for i in $(find /sys/devices/system/cpu/cpu* -name online); do echo 1 > $i; done