当前位置: 首页 > Linux

Linux动态启用-禁用超线程技术

时间:2023-04-06 02:31:06 Linux

转载请注明文章出处:https://tlanyan.me/linux-enab...Intel的超线程技术可以让两个线程在一个上并行执行physicalcore,large大多数情况下,可以提高硬件资源的利用率,增强系统性能。对于CPU密集型数值程序,超线程技术可能会导致程序整体性能下降。鉴于此,建议在执行OpenMP或MPI数值程序时关闭超线程技术。下面是在github上找到的动态开启和关闭超线程技术的脚本。原理是根据/sys/devices/system/cpu/cpuX/topology/thread_siblings_list文件找到逻辑核心关系,然后编辑/sys/devices/system/cpu/cpuX/online文件动态启用和禁用超线程技术。#!/bin/bashHYPERTHREADING=1functiontoggleHyperThreading(){对于/sys/devices/system/cpu/cpu[0-9]中的CPU*;做CPUID=`basename$CPU|cut-b4-`echo-en"CPU:$CPUID\t"[-e$CPU/online]&&echo"1">$CPU/onlineTHREAD1=`cat$CPU/topology/thread_siblings_list|复制代码cut-f1-d,`如果[$CPUID=$THREAD1];然后echo"->enable"[-e$CPU/online]&&echo"1">$CPU/onlineelseif["$HYPERTHREADING"-eq"0"];然后回显“->禁用”;否则回显“->启用”;fiecho"$HYPERTHREADING">$CPU/onlinefidone}functionenabled(){echo-en"启用超线程\n"HYPERTHREADING=1toggleHyperThreading}functiondisabled(){echo-en"禁用超线程\n"HYPERTHREADING=0toggleHyperThreading}#ONLINE=$(cat/sys/devices/system/cpu/online)OFFLINE=$(cat/sys/devices/system/cpu/offline)echo"--------------------------------------------------"echo-en"CPU在线:$ONLINE\tCPU离线:$离线\n"回声"--------------------------------------------------"whiletrue;doread-p"TypeinetoenableorddisablehyperThreadingorqtoquit[e/d/q]?"edcase$edin[Ee]*)enabled;break;;[Dd]*)disabled;exit;;[Qq]*)exit;;*)echo"PleaseanswereforenableordfordisablehyperThreading.";;cat/proc/cpuinfo查看启用的cpu信息,该命令不需要root权限;lscpu命令可以查看cpu的状态(不需要root权限):threadspercore值在超线程状态下为2,禁用时为1。参考Disable/EnableHyperThreadingcoresonruntime-Linux