介绍
这篇文章主要为大家展示了“Linux如何动态启用/禁用超线程技术”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux如何动态启用/禁用超线程技术”这篇文章吧。
<强>前言强>
英特尔的超线程技术能让一个物理核上并行执行两个线程,大多数情况下能提高硬件资源的利用率,增强系统性能。对于cpu密集型的数值程序,超线程技术可能会导致整体程序性能下降。鉴于此,执行OpenMP或者MPI数值程序时建议关闭超线程技术。
以下是github上找到的动态打开、关闭超线程技术的脚本。其原理是根据/sys/设备/系统/cpu/cpuX/拓扑/thread_siblings_list文件找到逻辑核的关系,然后编辑/sys/设备/系统/cpu/cpuX/在线文件实现动态开启和关闭超线程技术。
# !/bin/bash 超线程=1 function toggleHyperThreading (), { ,for CPU 拷贝/sys/设备/系统/cpu/cpu[0 - 9] *;做 ,,CPUID=' | basename CPU 美元;cut b4 - ' ,,echo -en “CPU:, CPUID \ t"美元; ,大敌;[,-e CPU/online 美元],,,,echo “1“,在$ CPU/在线 ,,THREAD1=' cat CPU/拓扑/thread_siblings_list 美元|,cut -f1 - d,“ ,,if [, CPUID 美元;=,THREAD1 美元;);然后 ,,,,echo “→, enable" ,,,,(,-e CPU/online 美元),,,,echo “1“,在$ CPU/在线 其他的,, ,,,if [,“HYPERTHREADING"美元,-eq “0“,];, then echo “→, disabled",, else echo “→enabled",, fi ,,,,echo “HYPERTHREADING"美元;,在$ CPU/在线 fi。才能 ,做 } function 使(),{ ,,,echo -en “Enabling 超\ n" ,,,超线程=1 ,,toggleHyperThreading } function 残疾(),{ ,,,echo -en “Disabling 超\ n" ,,,超线程=0 ,,toggleHyperThreading } # 在线=$ (cat /sys/设备/系统/cpu/网络) 离线=$ (cat /sys/设备/系统/cpu/离线) echo “- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻; echo -en “cpu # 39; s 在线:,在线\ t 美元;cpu # 39; s 离线:,离线\ n"美元; echo “- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻; while 真正的做 read 才能;-p “Type 拷贝e 用enable 或是d disable hyperThreading 或是q 用quit (e/d/q), ?“ed ,case ed 美元;在 ,,,(Ee) *,),启用,,休息;; ,,,(Dd) *,),禁用;退出;; ,,,(Qq) *,),退出;; ,,,*,),echo “Please answer e for enable 或是d for disable 超!”;; esac才能 以前做><>强备注:强>
<李>
脚本需根权限执行;
李> <李>可以通过猫/proc/cpuinfo查看启用cpu的信息,该命令无需根权限;
李> <李>lscpu命令可查看cpu的状态(无需根权限):超线程状态下每个核的线程数值为2,禁用时为1。李
>以上是“Linux如何动态启用/禁用超线程技术”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
Linux如何动态启用/禁用超线程技术