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

推薦する

nginx で第 3 レベルドメイン名を設定する方法の例

問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...

MySQL でスロークエリログ機能を有効にする方法

MySQL スロー クエリ ログは、問題のあるクエリを追跡するのに非常に役立ちます。現在のプログラム...

MySQL のインストール方法と設定に関するいくつかの問題の概要

1. MySQL rpm パッケージのインストール # インストールソースをダウンロードします [r...

オブジェクトアニメーションによってブロックされずにオブジェクトに div を表示する方法

今日はメニューボタンを作りました。マウスをボタンに移動するすると、ドロップダウンサブメニューが表示さ...

CSS 境界線の半分または部分的に表示される実装コード

1. 疑似クラスを使用して境界線の半分を表示する <!DOCTYPE html> <...

MySQL クエリの重複データ (重複データを削除し、ID が最も小さいデータのみを保持します)

開発の背景:最近、私はバッチ データを MySQL データベースにインポートする機能に取り組んでいま...

Linuxのip netnsコマンドを使用してネットワークポートを分離し、IPアドレスを設定します。

1. 分離マーカーを追加します。 ip netns add fd 2. 指定されたネットワーク カ...

フロントエンドネットワーク、JavaScriptの最適化、開発のヒントについて簡単に説明します。

1. ネットワークの最適化YSlowには23のルールがあります。これら数十のルールは、主に、不要な...

React 国際化 react-i18next の詳細な説明

導入react-i18next は、 i18nextをベースにした強力な国際化フレームワークです。 ...

Linux で見つけるためのフレンドリーな代替手段 (fd コマンド)

fd コマンドは、Linux ファイル システムを検索するためのシンプルで簡単な方法を提供します。...

MySQL データを誤って削除した場合の簡単な解決策 (MySQL フラッシュバック ツール)

概要Binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

Javascript フロントエンド最適化コード

目次if判定の最適化1. 最も簡単な方法:判断2. より良い方法: スイッチ3. より良いアプローチ...

CSSフロートの特性についての簡単な説明

この記事では、CSS フロートの特徴を紹介します。皆さんと共有し、自分用のメモとして残したいと思いま...

MySQL 5.7.17 インストール グラフィック チュートリアル (Windows)

最近データベースを学び始めたのですが、とても興味深いコースだと感じていますが、含まれる内容の多くは私...