Linuxサーバーを分析および最適化します
Perfspectを取得|パフォーマンスを実行する|ビルドパフォーマンス
このコマンドラインツールは、Linuxサーバーとそれらを実行しているソフトウェアを分析および最適化するのに役立つように設計されています。システム管理者、開発者、またはパフォーマンスエンジニアであろうと、このツールは、パフォーマンスと効率を高めるための包括的な洞察と実用的な推奨事項を提供します。
$ wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
$ cd perfspect
Perfspectには、システムとソフトウェアの両方のパフォーマンスを分析および最適化するために設計された一連のコマンドが含まれています。
perfspect -hを実行してください。利用可能なコマンドとオプションに注意してください。
Perfspectは、3.xリリースの再設計を受けました。 Perfspectの以前のリリースには、2つの段階が必要でした。
3.Xデザインは、これらの2つのステップを1つに組み合わせて...ユーザーフレンドリーなメトリックを作成します。新しいエクスペリエンスのためにperfspect metricsを実行します。
また、3.xでは、メトリックが収集されるとメトリックがstdoutに印刷されている「ライブメトリック」も利用できます。 perfspect metrics --live 。
SVR-INFO機能がPerfspectに含まれるようになりました。 SVR-INFO構成レポートは、 perfspect reportを実行することで生成されます。ベンチマークはperfspect report --benchmark all実行することで実行できます。 perfspect flameを実行して、ソフトウェアフレームグラフを生成します。そして、 perfspect telemetryを実行して、システムテレメトリを収集します。
| 指示 | 説明 |
|---|---|
perfspect config | システム構成を変更します |
perfspect flame | フレームグラフを生成します |
perfspect lock | システムワイドホットスポット、C2C、およびロック競合情報を収集します |
perfspect metrics | コアおよびUNCOREメトリックを監視します |
perfspect report | 構成レポートを生成します |
perfspect telemetry | システムテレメトリを収集します |
各コマンドにはperfspect <command> -h実行することで表示できる追加のヘルプテキストがあります。
configコマンドは、さまざまなシステム構成パラメーターを表示および変更する方法を提供します。 perfspect config -hを実行して、変更できるパラメーターを表示します。システムパラメーターを変更するときは注意してください。システムが動作しなくなるように構成することが可能です。場合によっては、デフォルト設定に戻るには再起動が必要になります。
例:
$ ./perfspect config --cores 24 --llc 2.0 --uncoremaxfreq 1.8
...
ソフトウェアフレームグラフは、ソフトウェアパフォーマンスのボトルネックの診断に役立ちます。 perfspect flameを実行して、システム全体のソフトウェアFlamegraphをキャプチャします。
システムにはますます多くのコアが含まれているため、カーネルロックのオーバーヘッドと、システムのスケーラビリティに影響を与える潜在的な誤った共有を分析すると便利です。 perfspect lockを実行して、システムワイドホットスポット、C2C、ロックコンテンション情報を収集します。経験豊富なパフォーマンスエンジニアは、収集された情報を分析してボトルネックを識別できます。
metricsコマンドは、システムパフォーマンスの特性評価メトリックを提供します。提供されるメトリックは、プラットフォームアーキテクチャに依存します。
例:
$ ./perfspect metrics --duration 30
emr ⣯ collection complete
Metric files:
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics.csv
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics_summary.csv
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics_summary.html
metricsコマンドは、デフォルトと「ライブ」の2つのモードをサポートしています。デフォルトモードは上記のように動作します - メトリックが収集され、レビューのためにファイルに保存されます。 「Live」モードは、CSV、JSONなどの選択した形式でメトリックを印刷し、コンソールで表示したり、ファイルまたは観測可能パイプラインにリダイレクトされたりすることができます。
ルートユーザーが不可能であるためにsudoが不可能で実行されていない場合は、コマンドラインの--norootフラグを使用しますperfspect metrics --noroot
for i in $(find /sys/devices -name perf_event_mux_interval_ms); do echo 125 > $i; done広範なオプションと例については、 perfspect metrics -h参照してください。
reportコマンドは、さまざまな形式でシステム構成レポートを生成します。デフォルトでは、すべてのカテゴリの情報が収集されます。
$ ./perfspect report
soc-PF4W5A3V ⢿ collection complete
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.html
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.xlsx
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.json
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.txt
コマンドラインオプションを提供することにより、情報のサブセットを収集することができます。 txt形式のみを指定することにより、stdoutに印刷され、レポートファイルに書き込まれることに注意してください。
$ ./perfspect report --bios --os --format txt
BIOS
====
Vendor: Intel Corporation
Version: EGSDCRB1.SYS.1752.P05.2401050248
Release Date: 01/05/2024
Operating System
================
OS: Ubuntu 23.10
Kernel: 6.5.0-44-generic
Boot Parameters: BOOT_IMAGE=/boot/vmlinuz-6.5.0-44-generic root=UUID=e6d667af-f0b7-450b-b409-9fe2647aeb38 ro
Microcode: 0x21000230
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-47-55/emr.txt
すべてのオプションについては、 perfspect report -h参照してください。
Perfspect Reportコマンドを介して実行されるメモリベンチマークには、Intel®メモリレイテンシーチェッカーアプリケーションが必要です。ここからダウンロードできます:MLC。ダウンロードしたら、Linux実行可能ファイルを抽出し、Perfspect/Tools/x86_64ディレクトリに配置します。
telemetryコマンドは、指定されたターゲットでテレメトリーコレクターを実行し、結果のレポートを生成します。デフォルトでは、すべてのテレメトリタイプが収集されます。テレメトリタイプを選択するには、追加のコマンドラインオプションが利用可能です( perfspect telemetry -hを参照)。
$ ./perfspect telemetry --duration 30
soc-PF4W5A3V ⣾ collection complete
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.html
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.xlsx
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.json
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.txt
デフォルトでは、Perfspectはローカルホスト、つまりPerfspectが実行されているホストをターゲットにします。リモートシステムは、ローカルホストからのSSHを通じてリモートシステムに到達できる場合にもターゲットにすることができます。
重要:リモートユーザーがパスワードレスのsudoアクセス(またはルート特権)を持っていることを確認して、Perfspectの機能を完全に活用します。
事前に構成された秘密鍵を使用して単一のリモートシステムをターゲットにします。
$ ./perfspect report --target 192.168.1.42 --user fred --key ~/.ssh/fredkey
...
パスワードを使用して単一のリモートシステムをターゲットにするには:
$ ./perfspect report --target 192.168.1.42 --user fred
[email protected]'s password: ******
...
複数のリモートシステムをターゲットにするために、必要な接続パラメーターを提供するためにYAMLファイルを使用します。
$ cat targets.yaml
# This YAML file contains a list of remote targets with their corresponding properties.
# Each target has the following properties:
# name: The name of the target (optional)
# host: The IP address or host name of the target (required)
# port: The port number used to connect to the target via SSH (optional)
# user: The user name used to connect to the target via SSH (optional)
# key: The path to the private key file used to connect to the target via SSH (optional)
# pwd: The password used to connect to the target via SSH (optional)
#
# Note: If key and pwd are both provided, the key will be used for authentication.
#
# Security Notes:
# It is recommended to use a private key for authentication instead of a password.
# Keep this file in a secure location and do not expose it to unauthorized users.
#
# Below are examples. Modify them to match your environment.
targets:
- name: ELAINES_TARGET
host: 192.168.1.1
port:
user: elaine
key: /home/elaine/.ssh/id_rsa
pwd:
- name: JERRYS_TARGET
host: 192.168.1.2
port: 2222
user: jerry
key:
pwd: george
$ ./perfspect report --benchmark speed,memory --targets targets.yaml
...
builder/build.sh必要なビルド環境を提供するDockerコンテナの依存関係とアプリを構築します。開発システムにDockerがインストールされていると仮定します。
アプリをビルドしmake 。依存関係が以前に構築されており、開発システムにインストールされたと仮定しています。