Linux でハイパースレッディング技術を動的に有効/無効にする方法の詳細な説明

Linux でハイパースレッディング技術を動的に有効/無効にする方法の詳細な説明

序文

Intel のハイパースレッディング テクノロジーにより、1 つの物理コア上で 2 つのスレッドを並行して実行できるため、ほとんどの場合、ハードウェア リソースの使用率が向上し、システム パフォーマンスが向上します。 CPU を集中的に使用する数値プログラムの場合、ハイパースレッディング テクノロジによってプログラム全体のパフォーマンスが低下する可能性があります。このため、OpenMP または MPI 数値プログラムを実行するときは、ハイパースレッディング テクノロジを無効にすることをお勧めします。

以下は、ハイパースレッディング テクノロジーを動的にオン/オフにする、github で見つかったスクリプトです。原理は、/sys/devices/system/cpu/cpuX/topology/thread_siblings_list ファイルに従って論理コア間の関係を見つけ、/sys/devices/system/cpu/cpuX/online ファイルを編集してハイパースレッディング テクノロジを動的にオン/オフにすることです。

#!/bin/bash

ハイパースレッディング=1

関数トグルハイパースレッディング() {
 /sys/devices/system/cpu/cpu[0-9]*のCPUの場合、
   CPUID=`ベース名 $CPU | cut -b4-`
   echo -en "CPU: $CPUID\t"
   [ -e $CPU/オンライン ] && echo "1" > $CPU/オンライン
   THREAD1=`cat $CPU/topology/thread_siblings_list | cut -f1 -d,`
   [ $CPUID = $THREAD1 ]の場合;
     echo "-> 有効にする"
     [ -e $CPU/オンライン ] && echo "1" > $CPU/オンライン
   それ以外
    if [ "$HYPERTHREADING" -eq "0" ]; then echo "-> 無効"; else echo "-> 有効"; fi
     echo "$HYPERTHREADING" > $CPU/オンライン
   フィ
 終わり
}

関数を有効にする() {
    echo -en "ハイパースレッディングを有効にしています\n"
    ハイパースレッディング=1
    ハイパースレッディングの切り替え
}

関数が無効になっています(){
    echo -en "ハイパースレッディングを無効にしています\n"
    ハイパースレッディング=0
    ハイパースレッディングの切り替え
}

#
ONLINE=$(cat /sys/devices/system/cpu/online)
オフライン=$(cat /sys/devices/system/cpu/offline)
エコー "---------------------------------------------------"
echo -en "CPU がオンライン: $ONLINE\t CPU がオフライン: $OFFLINE\n"
エコー "---------------------------------------------------"
真実である一方、
  read -p "ハイパースレッディングを有効にするには e を、無効にするには d を、終了するには q を入力してください [e/d/q]?" ed
  ケース$edin
    [Ee]* ) 有効; ブレーク;;
    [Dd]* ) 無効;終了;;
    [Qq]* ) 終了;;
    * ) echo "ハイパースレッディングを有効にする場合は e、無効にする場合は d と答えてください。";;
  エサック
終わり

述べる:

  1. スクリプトを実行するには root 権限が必要です。
  2. 有効な CPU 情報は、cat /proc/cpuinfo で表示できます。このコマンドには、root 権限は必要ありません。
  3. lscpu コマンドを使用して CPU のステータスを表示できます (ルート権限は必要ありません)。ハイパースレッディングが有効な場合、コアあたりのスレッド数は 2 になり、無効な場合は 1 になります。

参照する

実行時にハイパースレッディング コアを無効/有効にする – Linux

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • Linux スレッド終了方法の概要 (推奨)
  • Linux のスレッド切り替えとプロセス切り替えの方法
  • Linux スレッドをキャンセル (終了) する方法
  • Linux におけるプロセスとスレッドの比較と違い

<<:  MySql 8.0.11 のインストールと設定のチュートリアル

>>:  MySQL 5.7.17 圧縮パッケージのインストール不要の構成プロセス図

推薦する

MySQLリモートアクセスの設定方法をステップバイステップで説明します

序文MySQL データベースを使用する場合、クライアントはデータベース サーバーにリクエストを送信す...

MySQL 5.7を完全にアンインストールするための詳細な手順

この記事は主に、MySQLを再インストールする際のクリーンでないアンインストールのさまざまな問題をま...

MySQL テーブルの読み取り、書き込み、インデックス作成、その他の操作の SQL ステートメントの効率最適化の問題を分析します。

前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...

CSS3でよく使われるスタイルの詳しい解説[基本的なテキストとフォントのスタイル]

概要: Web ページをより美しく見せるために、ここでは CSS3 でよく使用されるスタイルをいくつ...

Ubuntu 19でdockerソースをインストールできない問題を共有する

主要な Web サイトと個人的な習慣に従って、Docker ソースを追加するには次の方法を使用します...

Easyswoole ワンクリック インストール スクリプトとパゴダ インストール エラー

よくある質問easyswoole を初めて使用する場合は、次のような問題に遭遇することがよくあります...

削除、切り捨て、ドロップの違いと選択方法

序文先週、同僚が私に尋ねました。「兄さん、MySQL にバグを見つけました。午後にディスクをクリーン...

CentOS7 は yum を使用して mysql 8.0.12 をインストールします

この記事では、centos7にyumを使用してMySQL 8.0.12をインストールする詳細な手順を...

スーパーバイザーウォッチドッグの使い方を3分で学ぶ

ソフトウェアとハ​​ードウェア環境centos7.6.1810 64ビット cat /etc/red...

Vue開発の詳細な説明 ソートコンポーネントコード

目次 <テンプレート> <ul class="コンテナ">...

Linux nohup コマンドの原理と例の分析

nohup コマンドUnix/Linux を使用する場合、通常はプログラムをバックグラウンドで実行す...

MySQLはJSON内部フィールドを抽出し、数値としてダンプします

目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...

CSS での配置の使用方法の詳細な研究 (要約)

CSS における位置指定の概要position属性は英語で位置を意味し、 CSSでの主な機能は要素...

Vue はシェイク機能を実装します (ios13.3 以降と互換性があります)

最近、shake.jsを使用して、shakeに似た機能を作成しました。ただし、shake機能はios...

Web Storage APIの使用に関する簡単な説明

目次1. ブラウザのローカルストレージ技術1.1、セッションストレージ1.2、ローカルストレージ2....