ホームページ  >  記事  >  運用・保守  >  Linux パフォーマンスとは何ですか?使い方? (使い方概要)

Linux パフォーマンスとは何ですか?使い方? (使い方概要)

藏色散人
藏色散人転載
2021-11-05 17:50:457184ブラウズ

次のコラム linux システム チュートリアル では、linux perf の使用方法を紹介および要約します。困っている友人の役に立てば幸いです。

はじめに

perf は、Linux システムで提供されるパフォーマンス分析ツールであり、「パフォーマンス カウンター」と呼ばれるカーネル サブシステムに基づいて実装され、ハードウェア (CPU、パフォーマンス) をサポートします。 PMU (パフォーマンス監視ユニット) およびソフトウェア (ソフトウェア カウンター、トレースポイント) レベルでの分析。

perf のイベント

Perf は、他のパフォーマンス チューニング ツールと同様に、モニタリング オブジェクトをサンプリングし、サンプリング ポイントの分布に基づいてプログラム全体を推測します。 perf list コマンドを使用すると、perf が分岐ミス、CPU クロックなどの多くのサンプリング イベントをサポートしていることがわかります。 perf の事前定義イベントは、ハードウェア生成イベント (キャッシュ ヒット/ブランチ ミス) やソフトウェア生成イベント (コンテキスト スイッチ/ページ フォールト) など、さまざまなタイプに属します。

tracepoint

トレースポイントは、Linux カーネルで定義されたフックです。有効にすると、他のツールがシステムを取得しやすくするために、特定のロジックが実行されるときにトリガーされます。内部実行ステータスやその他の情報、perf はトレースポイントを使用し、さまざまなトレースポイント イベントを記録およびカウントし、分析レポートを生成します。

使用方法

perf ツールの具体的な使用方法は次のとおりです。

perf [--version] [--help] COMMAND [ARGS]

コマンド リストは、perf --help を実行すると表示できます。以下に、一般的に使用されるいくつかのコマンドを示します。

perf stat

perf stat の機能は、コマンドを実行し、その操作中にさまざまなデータを収集することです。コマンドの実行ステータスの全体的な概要を提供できます。プログラム。例:

user@localhost:~$ perf stat hostname
localhost
 Performance counter stats for 'hostname':
          0.313464      task-clock (msec)         #    0.481 CPUs utilized          
                 2      context-switches          #    0.006 M/sec                  
                 0      cpu-migrations            #    0.000 K/sec                  
               153      page-faults               #    0.488 M/sec                  
           896,723      cycles                    #    2.861 GHz                    
           620,709      instructions              #    0.69  insn per cycle         
           121,143      branches                  #  386.465 M/sec                  
             6,247      branch-misses             #    5.16% of all branches        
       0.000651441 seconds time elapsed

上記の例では、hostname コマンドが perf stat を通じて実行され、タスク クロック、コンテキスト スイッチ、待機など、その操作中のいくつかのインジケーターが要約されて表示されます。デフォルトでは、perf stat は、次のような一般的に使用されるいくつかのイベントの統計を出力します。

task-clock-msecs:cpu 使用率
context-switches:进程切换次数
page-faults:发生缺页的次数
cpu-migrations:表示进程运行过程中发生了多少次CPU迁移,即被调度器从一个CPU转移到另外一个CPU上运行
cycles:处理器时钟,一条机器指令可能需要多个cycles
instructions: 机器指令数目
branches:遇到的分支指令数
branch-misses是预测错误的分支指令数

さらに、-e パラメータを使用して、次のような関心のあるイベントを指定できます。

perf top

perf top の機能は、システムの現在のパフォーマンス統計をリアルタイムで表示することです。以前の perf stat は特定のプログラムを分析するために使用されますが、どのプログラムがシステム パフォーマンスに影響を与えるかわからない場合がありますが、現時点では perf top を使用して疑わしいプログラムを見つけることができます。例:

user@localhost:~$ perf stat -e cache-misses hostname
localhost
 Performance counter stats for 'hostname':
          682      cache-misses                                                
       0.000646676 seconds time elapsed

上の例は、perf が CPU クロック イベントのデータをカウントし、比率に従ってそれらを並べ替えることを示しています。 perf stat と同様に、-e パラメータを使用して他のイベントの統計を指定できます。たとえば、perf top -e context-switches では、プロセス スイッチが最も多い上位 N プロセスを表示できます。

パフォーマンス レコードとパフォーマンス レポート

パフォーマンス レコードは perf stat に似ており、コマンドを実行して統計情報を生成できますが、パフォーマンス レコードは結果を表示しません。代わりに、結果をファイルに出力します。パフォーマンス レコードによって生成されたファイルは、パフォーマンス レポートで解析できます。

perf レコードでは、-g パラメーターを使用して分析中に呼び出しグラフを生成し、上位レベルの論理分布を特定することもできます。

その他

この例では、パフォーマンス解析結果の [シンボル] 列に C 言語の関数の名前が表示されていることがわかります。 Java の場合、JIT コンパイルで生成された関数は、Java の関数名ではなくシンボル内に直接表示されますが、現時点では問題を特定するのはそれほど簡単ではありません。シンボルとシンボルを組み合わせるには、追加の手段を使用する必要があります。 Javaプログラムのシンボルテーブルとの対応については後で詳しく説明します。

推奨学習: 「

Linux ビデオ チュートリアル

以上がLinux パフォーマンスとは何ですか?使い方? (使い方概要)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。