Linux动态启用/禁用超线程技术的方法详解

 更新时间:2019年07月05日 16:46:22   作者:tlanyan  
这篇文章主要给大家介绍了关于Linux动态启用/禁用超线程技术的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

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: $CPUID\t"
   [ -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 HyperThreading\n"
    HYPERTHREADING=1
    toggleHyperThreading
}

function disabled() {
    echo -en "Disabling HyperThreading\n"
    HYPERTHREADING=0
    toggleHyperThreading
}

#
ONLINE=$(cat /sys/devices/system/cpu/online)
OFFLINE=$(cat /sys/devices/system/cpu/offline)
echo "---------------------------------------------------"
echo -en "CPU's online: $ONLINE\t CPU's offline: $OFFLINE\n"
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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • Typecho程序伪静态规则大全(包括Linux/Windows)

    Typecho程序伪静态规则大全(包括Linux/Windows)

    Typecho程序的伪静态规则不同于wp直接默认可用,需要我们手工加载到空间中才可以生效。下面老左整理了这款程序在不同的主机环境中的伪静态规则,希望对大家有所帮助
    2012-09-09
  • linux后台运行的几种方式(小结)

    linux后台运行的几种方式(小结)

    这篇文章主要介绍了linux后台运行的几种方式(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • CentOS7 下安装telnet服务的实现方法

    CentOS7 下安装telnet服务的实现方法

    这篇文章主要介绍了CentOS7 下安装telnet服务的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样功能的方法,需要的朋友可以参考下
    2017-10-10
  • linux 磁盘转移空间的方法

    linux 磁盘转移空间的方法

    本篇文章主要介绍了linux 磁盘转移空间的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Linux jdk安装及环境变量配置教程(jdk-8u144-linux-x64.tar.gz)

    Linux jdk安装及环境变量配置教程(jdk-8u144-linux-x64.tar.gz)

    这篇文章主要介绍了Linux jdk安装及环境变量配置(jdk-8u144-linux-x64.tar.gz),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 阿里云OSS访问权限配置(RAM权限控制)实现

    阿里云OSS访问权限配置(RAM权限控制)实现

    这篇文章主要介绍了阿里云OSS访问权限配置(RAM权限控制)实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Ubuntu部署python3.5的开发和运行环境

    Ubuntu部署python3.5的开发和运行环境

    这篇文章主要介绍了Ubuntu部署python3.5的开发和运行环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • APACHE 配置文件中文版 httpd.conf FOR Apache 2.2.13

    APACHE 配置文件中文版 httpd.conf FOR Apache 2.2.13

    APACHE配置文件中文版 httpd.conf FOR Apache 2.2.13 ,综合网上2.0版本的翻译,加入自己的理解,补充完善。
    2009-11-11
  • Linux 的cp命令及示例详解

    Linux 的cp命令及示例详解

    本篇文章主要介绍了Linux 的cp命令详解, cp指令用于复制文件或目录,有兴趣的可以了解一下。
    2016-11-11
  • linux free命令详解

    linux free命令详解

    本篇文章主要介绍了linux free命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02

最新评论