ホームページ >運用・保守 >Linuxの運用と保守 >Linux パフォーマンスとは何ですか?使い方? (使い方概要)
次のコラム 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 サイトの他の関連記事を参照してください。