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 圧縮パッケージのインストール不要の構成プロセス図

推薦する

vue data が関数である理由をご存知ですか?

公式サイトの説明: コンポーネントを定義する場合、コンポーネントは複数のインスタンスを作成するために...

MacにMySQLをインストールするときに初期パスワードを忘れた場合の対処方法

パスワードを忘れると困ります。Mac に MySQL をインストールするための初期パスワードを忘れて...

Linuxパフォーマンス監視コマンドの簡単な紹介

システムでさまざまな IO ボトルネック、メモリ使用量の増加、CPU 使用率の増加などの問題が発生し...

HTML+CSSは、要素の位置までスクロールして読み込みアニメーション効果を表示します。

要素までスクロールするたびに読み込みアニメーションを追加するにはどうすればよいですか?初期パラメータ...

Json の長所と短所、使用方法の紹介

目次1. JSONとは何か1.1 配列リテラル1.2 オブジェクトリテラル1.3 混合リテラル1.4...

データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントのパスワード暗号化の詳細な説明と例データベースアカウントとパスワードはデータベ...

Linux ユーザー状態とカーネル状態間の通信方法の詳細な説明

CPU 権限の制限により、Linux ユーザー状態とカーネル状態間の通信は、プロセス間通信を使用した...

JavaScript フロー制御 (ループ)

目次1. forループ2. 二重の for ループ3. whileループ4. dowhileループ5...

JavaScript におけるブラウザ互換性の問題について簡単に説明します

ブラウザの互換性は、実際の開発では見落とされがちな最も重要な部分です。古いバージョンのブラウザの互換...

React 非親子コンポーネントパラメータ渡しのサンプルコード

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。 ...

サーバー上でjupyterノートブックを実行する問題を解決する

目次サーバーはjupyterノートブックを実行します仮想環境次にファイアウォールをオフにしますJup...

vue3 を使用してマテリアル ライブラリを構築する方法

目次なぜマテリアルライブラリが必要なのでしょうか?材質は何ですか?素材の種類fuep、vue3 ベー...

MySQL の永続性とロールバックの原理を 1 つの記事で理解する

目次再実行ログディスクデータを直接更新するのではなく、最初にメモリデータを更新する必要があるのはなぜ...

javascript 入力画像のアップロードとプレビュー、FileReader プレビュー画像

FileReader は、フロントエンドのファイル処理、特に画像処理にとって重要な API です。画...

Bash の山括弧の深い理解 (初心者向け)

序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...