CoreFreqとLinuxで詳細なCPU情報をチェックする

LinuxでCPU情報確認する必要があると感じたことはありますか? あなたは今までにあなたのCPUの本当のスピードを知りたいと思いましたか? それとも、どのプロセスが現在特定のコアにバインドされていますか? それらは専門家だけのための質問のようです。

しかし、私と一緒にいてください - アリスのように、あなたは見ているガラスを通して見ることによって予想以上のものを発見するかもしれません。 それで、それ以上の苦労なしに、私たちの主役であるCoreFreqを紹介させてください。

CoreFreqでLinuxのあなたのCPUを知る

CoreFreqは、Linuxシステム上のCPUパフォーマンスデータを収集するためのツールです。 オープンソースライセンスがあります。 これはフランスの開発者CyrIngによって書かれており、ソースはGitHubで入手できます。

明らかに安定していますが、CoreFreqは実験的なものと見なす必要があります。 本日現在、Archリポジトリでのみ利用可能です。 他のディストリビューションには(まだ)パッケージされていません。 あなたがそれを試してみたいのであれば、あなたはそれをコンパイルする必要があるかもしれません。 これは難しいことではありませんし、これまでに一度も行ったことがない場合は、最初の良いステップになるでしょう。

最後に、CoreFreqが他の同様のツールと異なる点は、 高精度のデータを収集することです。 そのためには、CoreFreqはハードウェアにできるだけ近いところでCPUを監視する必要があります。 では、LinuxマシンのCPU情報をどのように取得するのかを見てみましょう。

CoreFreqはどのように機能しますか?

CoreFreqは3つの部分で構成されています。 カーネルモジュール、デーモン、およびユーザーランドのコマンドラインインターフェイス (CLI)。

  • 定義上、カーネルモジュールはホストへのフルアクセス権を持ちます。 低レベルのデータを収集するのはその責任です。
  • その後、データはユーザーランドデーモンによって収集されます。 デーモンはrootとして実行する必要があります。
  • 最後に、CoreFreqには、人間が読める形式でデータを報告するための端末インタフェースが付属しています。 そのCLIツールは通常のプロセスであり、エンドユーザーによって使用される可能性があります。

CoreFreqのコンパイルと実行

CoreFreqを実行する前に、コンパイルする必要があります。 それは、あなたのコンピュータがそれを理解するような方法でプログラマによって書かれたようにソースコードを変換することを意味します。 私はあなたがそれコンパイルしなければならないと言うときに恐れてはいけません - あなたはするべき多くの仕事を持っていないでしょう。 あなたのコンピュータはすべての大変な仕事をするでしょう。

CoreFreqのコンパイルに必要な手順は、必要なパッケージのインストールを除いて、すべてのLinuxディストリビューションでほぼ同じです。 ここではCentOS / Red HatとDebianのための説明をします。 必要ならば、コメント欄を使って他のディストリビューションに関するより詳細な情報を得てください。

それにもかかわらず、今度はあなたのお気に入りのターミナルエミュレータを開いて入力を開始します。RedHat / CentOSの場合、必要なツールは“ Development Tools”グループの一部です。

# specific to Red Hat, CentOS sudo yum group install "Development Tools" 

DebianおよびDebianベースのディストリビューションでは、代わりにいくつかの個別のパッケージをインストールする必要があります。

  # specific to Debian-based distributions sudo apt-get install dkms git libpthread-stubs0-dev 
  • dkmsはソースからカーネルモジュールを構築するためのツールです。 CoreFreqがカーネルモジュールとして実装されているため、ハードウェアからできるだけ近いところでデータを収集する必要があります。
  • gitは分散開発に使用されるツールです。 ここでは、最新のCoreFreq開発ツリーのコピーをダウンロードするためだけに使用します。 あなたが望むなら、あなたは自分でソフトウェアにパッチを当てて元の開発者にpull requestを送ることができます。
  • libpthread-stubs0-devはCoreFreqをビルドするのに必要なライブラリです(実際、Linuxではpkg-configデータしか含まれていませんが、今日はふりをしましょう)。

必要なツールがあなたのシステムにインストールされたら、CoreFreqのソースコードをダウンロードする時が来ます。

  # Distribution-agnostic part git clone //github.com/cyring/CoreFreq.git 

gitが最新バージョンのソースとプロジェクトのすべての変更履歴の両方をダウンロードすることに注意してください。 単なるユーザーにとっては、これは役に立ちません。 しかし、私はこれがあなたがオープンソース開発プロセスを詳しく調べる機会になるかもしれないという秘密の希望を持っています。 しかし、括弧を閉じましょう。これでソフト​​ウェアをコンパイルする準備が整いました。

  cd CoreFreq/ make && echo Done 

数秒後、ターミナルウィンドウに「Done」という単語が表示されます。これはコンパイルが成功したことを意味します。

この時点で、CoreFreqの3つの部分がコンパイルされ、開始する準備が整いました。 前述したように、ソフトウェアは3つの部分から構成されています。つまり、CoreFreqを実行するためのソフトウェアは3つあります。

カーネルモジュールのインストール

技術的な理由から、CoreFreqは同じ低レベルのカウンタを使用するため、最初にNMIウォッチドッグを無効にする必要があります。

私のDebianシステムでは、/ etc / default / grubファイルを編集して“ nmi_watchdog = 0”カーネルコマンドライン引数を追加し、その後update-grubを実行update-grubことでこれを行うことができます。

  sudoedit /etc/default/grub update-grub 

もちろん、新しいカーネル引数を考慮に入れるためにはリブートする必要があります。

この記事を書いている間気をつけてください、私はそれをしませんでした。 そして目立った問題はありません。

カーネルモジュールをインストールするには、標準のLinuxツールinsmodを使います。 モジュールをカーネルにロードして「起動」します。

  sudo insmod corefreqk.ko 

lsmodを使ってCoreFreqがインストールされていることを確認できます。

  lsmod | grep corefreq corefreqk 45056 0 

そして最後に、dmesgの出力を調べることでCoreFreqがあなたのプロセッサを認識したかどうかをチェックすることができます。

  sudo dmesg | grep CoreFreq [57413.945720] CoreFreq: Processor [06_1E] Architecture [Nehalem/Lynnfield] CPU [8/8] 

デーモンの起動

デーモンを起動する時が来ました。 その目的は、カーネルモジュールによって収集されたデータを収集することです(カーネル内部で可能な限り少ないことを実行するのは良い設計です)。

  sudo ./corefreqd -i 

このコマンドはデーモンの実行中には戻りません 。 ですから、端末が明らかに「ハング」しているのを見ても驚かないでください。デーモンは単に実行されているだけで、クライアントの要求を受け入れる準備ができています。 私が上記の「-i」フラグを使用しているのに気付きましたか? これはデーモンが何が起こっているのかについて端末にもっと多くの情報を表示するためのものです。 単なる好奇心の問題ですが、この記事はすべて好奇心に関するものです。

クライアントを起動する

これでクライアントアプリケーションを起動する準備が整いました。 新しいターミナルを開き、CoreFreqディレクトリに行きます。 そこからクライアントを起動します。

  cd CoreFreq ./corefreq-cli 

LinuxであなたのCPUを調べる

モデル名やその機能など、プロセッサの静的特性を超えて、CoreFreqが実行されると、実際の状態でのCPUの動的動作の調査を開始することができます。 たとえば、上のスクリーンショットでは、私のプロセッサのさまざまなコアが138MHzから334MHzの間で動作していることがわかります。 (非常に小さい)負荷はそれらの間で均等に分散されています。

さらに、各コアについて、さまざまなプロセッサのCステートに費やされる時間(合計は100%)、およびターボブーストモードで費やされる時間を確認できます。 これらの概念に慣れていないのであれば、Victor Stinnerによる素晴らしい説明を見てみることをお勧めします。//haypo.github.io/intel-cpus.html

この時点で、デモンストレーションのために、1つのコアの100%を消費することを「希望」として、端末で無限ループを開始しました。

  # infinite loop # eats 100% of the CPU--really? while true; do : ; done 

…そして、確かに、無限ループを実行しているシェルが現在どのコアにバインドされているかを明確に確認できます。 これは、corefreq-cli タスクのモニターを調べて確認できます。

を押してメニューを表示し、[表示]> [タスクモニタ]を選択します。

上の写真ではそれがわかりませんが、自分で実行すると、数秒後にタスクがコアから別のコアにジャンプすることに気付くでしょう。 その理由はわかっていると思います。 しかし、あなたはそれを推測できますか? あなたのアイデアを共有するためにコメント欄を使用することを躊躇しないでください!

しかしその前に、CoreFreqを停止する方法を見てみましょう。

CoreFreqを停止する

CoreFreqを停止するには、ソフトウェアの3つの部分を起動したのと逆の順序で終了するだけです。

  • クライアント端末でF4キーまたはCRTL-Cキーを押してクライアントを終了します。
  • Ctrl + Cキーを押してデーモンを終了する
  • カーネルモジュールを削除しますsudo rmmod corefreqk

そして、これで終わりです。

そしていま?

いくつかの側面では、CoreFreqはあなたがトップ、htop、センサー、lscpuと他のいくつかのツールを使って集めることができるLinuxのあなたにいくつかのCPU情報をもたらします。 しかし、CoreFreqを使用すると、1つのインターフェイスにすべての情報があるだけでなく、データの収集方法を考えると、より高い精度が得られます。 最後に、当然ながら私が知る限り、一部のデータは他のどのツールでも使用できません(Cステートの比率、サイクルあたりの命令数)。

このツールは、計算集約型アルゴリズムを微調整しようとしている開発者のみを対象としています。 あるいは、自分のハードウェアをオーバークロックすることでどれだけの利益が得られるかをチェックしたいゲーマーのためのものです。

しかし、私が個人的に認める必要があるのは、現代のハードウェアの現実に「触れる」ことができるので、そのようなツールは常に面白いと思うことです。 たとえば、CPUのさまざまなコアが異なる速度で実行される可能性があること、または異なるCモードで実行される可能性があることを、多くの人が知っていましたか。

とにかく、私はきっとあなたの何人かがそのツールの非常に賢い用法を見つけるか、または彼らのハードウェアについて興味をそそる発見をするだろうと確信しています。 以下のコメント欄で私たちとそれを共有することを躊躇しないでください。 CyrIngがCoreFreqについてのあなたのアイデアやフィードバックを聞いて喜んでそれをさらに良くすると確信しています。

そして、忘れないでください:あなたがオープンソースソフトウェアを開発したならば、それがFOSSで取り上げられるために私達に連絡すること自由に感じなさい。

推奨されます

UbuntuでUSBポートを無効にする方法
2019
Debianの創設者Ian Murdockが不思議に死ぬ
2019
サムスンのLinuxベースのTizen OSはセキュリティの悪夢です
2019