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

推薦する

CSS ボックスを中央揃えするためのよく使われるいくつかの方法 (要約)

最初のもの: CSSの位置プロパティの使用 <スタイル タイプ="text/css&...

Vuex データの永続性を実装するためのアイデアとコード

vuexとはvuex: vue.js専用に開発された状態管理ツールで、すべてのコンポーネントの状態を...

CocosCreatorのホットアップデートの包括的な説明

目次序文ホットチェンジとはCocos Hot アップデートの概要マニフェストプロジェクトリソースとゲ...

ナビゲーションデザインと情報アーキテクチャ

<br />ナビゲーションについて話すときは、ほとんどの場合、ナビゲーションがコンテンツ...

MySQL データベースの高度なクエリとマルチテーブルクエリ

MySQL マルチテーブルクエリワークシートを追加する -- ユーザーテーブル (ユーザー) テーブ...

Windows 10 に Apache 2.4.41 をインストールするチュートリアル

1. Apache 2.4.41 のインストールと設定最初のステップは、以下に示すように、https...

MySQL よく使われる関数の詳細な概要

目次MySQL 共通関数1. 数値関数文字列関数3. 時間機能4. システム機能5. 集計関数MyS...

Webpack での publicPath の使用法の詳細な説明

目次出力出力パス出力.publicPath webpack-dev-server の publicP...

nestjs における例外フィルター Exceptionfilter の具体的な使用法

Nestjs 例外フィルターといえば、非常に強力な .Net のグローバル フィルターについて触れな...

MySQLアラームの詳細な分析と処理

最近、あるサービスにアラームが発生し、耐えられなくなっています。アラーム情報は次のとおりです。メトリ...

Vue.js $refs 使用例の説明

プロパティやイベントがあるにもかかわらず、JavaScript で子コンポーネントに直接アクセスする...

Linux システムの busybox に mkfs.vfat コマンドを移植する

オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...

MySQL全文インデックスを使用して検索エンジンのサンプルコードの簡易版を実現する

序文全文インデックスを使用できるのは Innodb と MyISAM ストレージ エンジンのみです ...

よく使われるnginxの書き換えルールの詳細な説明

この記事では、Web ページのリンクを美しくするためによく使用される書き換えルールをいくつか紹介しま...