intel的超线程技术能让一个物理核上并行执行两个线程,大多数情况下能提高硬件资源的利用率,增强系统性能。对于cpu密集型的数值程序,超线程技术可能会导致整体程序性能下降。鉴于此,执行OpenMP或者MPI数值程序时建议关闭超线程技术。

以下是github上找到的动态打开、关闭超线程技术的脚本。其原理是根据/sys/devices/system/cpu/cpuX/topology/thread_siblings_list文件找到逻辑核的关系,然后编辑/sys/devices/system/cpu/cpuX/online文件实现动态开启和关闭超线程技术。

#!/bin/bash

HYPERTHREADING=1

function toggleHyperThreading() {

for CPU in /sys/devices/system/cpu/cpu[0-9]*; do

CPUID=`basename $CPU | cut -b4-`

echo -en "CPU: $CPUIDt"

[ -e $CPU/online ] && echo "1" > $CPU/online

THREAD1=`cat $CPU/topology/thread_siblings_list | cut -f1 -d,`

if [ $CPUID = $THREAD1 ]; then

echo "-> enable"

[ -e $CPU/online ] && echo "1" > $CPU/online

else

if [ "$HYPERTHREADING" -eq "0" ]; then echo "-> disabled"; else echo "-> enabled"; fi

echo "$HYPERTHREADING" > $CPU/online

fi

done

}

function enabled() {

echo -en "Enabling HyperThreadingn"

HYPERTHREADING=1

toggleHyperThreading

}

function disabled() {

echo -en "Disabling HyperThreadingn"

HYPERTHREADING=0

toggleHyperThreading

}

#

ONLINE=$(cat /sys/devices/system/cpu/online)

OFFLINE=$(cat /sys/devices/system/cpu/offline)

echo "---------------------------------------------------"

echo -en "CPU's online: $ONLINEt CPU's offline: $OFFLINEn"

echo "---------------------------------------------------"

while true; do

read -p "Type in e to enable or d disable hyperThreading or q to quit [e/d/q] ?" ed

case $ed in

[Ee]* ) enabled; break;;

[Dd]* ) disabled;exit;;

[Qq]* ) exit;;

* ) echo "Please answer e for enable or d for disable hyperThreading.";;

esac

done

备注:

1.脚本需root权限执行;

2.可以通过cat /proc/cpuinfo查看启用的cpu信息,该命令无需root权限;

3.lscpu命令可查看cpu的状态(无需root权限):超线程状态下threads per core数值为2,禁用时为1.

参考

Disable / Enable HyperThreading cores on runtime – linux

原创文章,作者:kinpo, k,如若转载,请注明出处:https://www.yidc.net/archives/4597

linux 禁用超线程,Linux动态启用/禁用超线程技术相关推荐

  1. Linux动态启用/禁用超线程技术

    转载请注明文章出处:https://tlanyan.me/linux-enable-disable-hyper-threading/ intel的超线程技术能让一个物理核上并行执行两个线程,大多数情况 ...

  2. linebreak_WPF:LineBreak动态启用/禁用

    我不相信FlowDocument中有任何方法可以使LineBreak不会真正中断,除非将其取出.您可以选择切换到使用WPF布局或使用附加属性在LineBreak和空Run之间切换. 使用WPF布局 您 ...

  3. 如何在Redhat 7 Linux系统上停止/启动和禁用/启用防火墙

    转载来源:https://linuxconfig.org/how-to-stop-start-and-disable-enable-firewall-on-redhat-7-linux-system ...

  4. linux barrier,Linux文件系统的barrier:启用还是禁用

    大多数当前流行的Linux文件系统,包括EXT3和EXT4,都将文件系统barrier作为一个增强的安全特性.它保护数据不被写入日记.但 是,在许多情况下,我们并不清楚这些barrier是否有用.本文 ...

  5. linux网络基础设置篇-----(查看网络连接情况,域名解析nslookup,本地映射,启用禁用网络接口,路由跟踪)

    目录 1,查看网络接口信息ifconfig (1) 查看所有活动的网络接口信息 (2)查看指定网络接口信息 2,查看主机名称hostname (1)hostname 命令 3 , 查看路由条目标rou ...

  6. linux barrier,如何决定何时启用Linux文件系统barrier功能?

    大多数当前流行的Linux文件系统,包括EXT3和EXT4,都将文件系统barrier作为一个增强的安全特性.它保护数据不被写入日记.但是,在许多情况下,我们并不清楚这些barrier是否有用.本文就 ...

  7. RHEL/CentOS 7.x如何启动/关闭、启用/禁用服务? 修改系统运行级别

    一.Services使用了systemd来代替sysvinit管理 1.systemd的服务管理程序: systemctl是主要的工具,它融合之前service和chkconfig的功能于一体.可以使 ...

  8. linux共享库 == windows动态库

    linux共享库  == windows动态库     之间基本等同.

  9. 演示:混合配置基于Linux winows cisco环境动态路由

    演示:混合配置基于Linux winows cisco环境动态路由 (使用GNS3+VM完全可以一台物理计算机上完成所有实验) 配套演示录像:http://edu.51cto.com/course/c ...

  10. python 禁用网卡_如何编程实现启用禁用网卡

    展开全部 /***************************************************************************** 演示如何编程6261696475 ...

最新文章

  1. 使用ROS和TensorFlow进行深度学习
  2. Linux下一些操作命令
  3. 如何在Python中调用Windows的cmd命令?
  4. Java的新项目学成在线笔记-day6(五)
  5. AnimatorController即动画控制器创建的BUG
  6. 正则化与L0、L1、L2范数略解
  7. win32 输出文字时清除之前的_努力学习没效果?3个步骤,强化沟通输出,实现飞跃式成长...
  8. 机器学习-集成之随机森林算法原理及实战
  9. bzoj 2908. 又是nand(树链剖分+区间NAND+单点修改)
  10. eclipse mat 打开dump文件,明明大小1G,打开后却只有不到100M.其他的去哪了
  11. win10 x64下安装oracle 12c出现[INS-30131]报错的解决方案
  12. Android Debug方法
  13. vs 下 opengl 配置问题
  14. IE6之各种不适记录
  15. 记录数据库面试题及答案21~41
  16. WebLogic安装说明
  17. 一个炫酷的个人网站带后台
  18. linux cat命令什么意思
  19. 13位时间戳单位为毫秒,10位字符串单位为秒。时间戳转换日期数字格式100%全乎
  20. MarkdownPad2 自动生成目录

热门文章

  1. ideal上初写mapreduce程序出现的报错信息解决
  2. 计算机usb口设置方法,如何在电脑上设定usb端口权限
  3. CodeForces - 1117G
  4. STM32单片机配置FPGA
  5. 大话2服务器丢失怎么修复,我玩大话2,现在服务器找不见了,怎么办?
  6. response.addheader详解
  7. MATLAB 如何导入.txt文本
  8. C++11的std::is_same和std::decay使用与源码解析
  9. c语言小兔子原来有1个萝卜,小兔子和小狐狸的100个睡前晚安小故事
  10. Android之BLE(低功耗)蓝牙开发