Linux如何动态启用/禁用超线程技术

  介绍

这篇文章主要为大家展示了“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如何动态启用/禁用超线程技术