Analysieren und optimieren Sie Linux -Server
Perfspect | Perfspect | Perfspect bauen
Dieses Befehlszeilen-Tool soll Ihnen helfen, Linux-Server und die auf ihnen ausgeführte Software zu analysieren und zu optimieren. Unabhängig davon, ob Sie ein Systemadministrator, ein Entwickler oder ein Leistungsingenieur sind, bietet dieses Tool umfassende Einblicke und umsetzbare Empfehlungen, um die Leistung und Effizienz zu verbessern.
$ wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
$ cd perfspect
Perfspect enthält eine Reihe von Befehlen, die sowohl die System- als auch die Softwareleistung analysieren und optimieren sollen.
Führen Sie perfspect -h für die höchste Ebene aus. Beachten Sie die verfügbaren Befehle und Optionen.
PerfScespect hat eine Neugestaltung für die 3.x-Veröffentlichung durchlaufen. Vorherige Veröffentlichungen von Perfspect erforderten zwei Stufen:
Das 3.x-Design kombiniert diese beiden Schritte zu einer ... Erzeugung benutzerfreundlicher Metriken. Führen Sie perfspect metrics für die neue Erfahrung aus.
Ebenfalls mit 3.x sind "Live -Metriken" erhältlich, bei denen Metriken bei der gesammelten Stdout auf STDOut gedruckt werden. Versuchen Sie es perfspect metrics --live .
Die SVR-Info-Funktionalität ist jetzt in Perfspect enthalten. Der SVR-Info-Konfigurationsbericht wird durch Ausführen von perfspect report generiert. Benchmarks können durch Ausführen von perfspect report --benchmark all ausgeführt werden. Führen Sie perfspect flame aus, um eine Software Flamgraph zu generieren. Und führen Sie perfspect telemetry aus, um System -Telemetrie zu sammeln.
| Befehl | Beschreibung |
|---|---|
perfspect config | Systemkonfiguration ändern |
perfspect flame | Flamgraphs erzeugen |
perfspect lock | Sammeln Sie systemweite Hotspot-, C2C- und Sperreninformationen |
perfspect metrics | Überwachen Sie Kern- und Uncore -Metriken |
perfspect report | Konfigurationsbericht erstellen |
perfspect telemetry | Systeme Telemetrie sammeln |
Jeder Befehl enthält zusätzlichen Hilfetext, der durch Ausführen von perfspect <command> -h angesehen werden kann.
Der Befehl config bietet eine Methode zum Anzeigen und Ändern verschiedener Systemkonfigurationsparameter. Führen Sie perfspect config -h aus, um die Parameter anzuzeigen, die geändert werden können. Verwenden Sie Vorsicht beim Ändern der Systemparameter. Es ist möglich, das System so zu konfigurieren, dass es nicht mehr funktioniert. In einigen Fällen muss ein Neustart zu den Standardeinstellungen zurückkehren.
Beispiel:
$ ./perfspect config --cores 24 --llc 2.0 --uncoremaxfreq 1.8
...
Software -Flamgraphs sind nützlich bei der Diagnose von Software -Leistungsengpassungen. Führen Sie perfspect flame aus, um eine systemweite Software Flamgraph zu erfassen.
Da Systeme immer mehr Kerne enthalten, kann es nützlich sein, den Kernel-Sperraufwand und potenzielle falsche Sharing zu analysieren, die sich auf die Skalierbarkeit der Systeme auswirken. Führen Sie perfspect lock aus, um systemweite Hotspot-, C2C- und Sperrungsinformationen zu sammeln. Erfahrene Leistungsingenieure können die gesammelten Informationen analysieren, um Engpässe zu identifizieren.
Der Befehl metrics bietet Metriken zur Systemleistungcharakterisierung. Die bereitgestellten Metriken sind von der Plattformarchitektur abhängig.
Beispiel:
$ ./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
Der Befehl metrics unterstützt zwei Modi - Standard und "Live". Der Standardmodus verhält sich wie oben - Metriken werden zur Überprüfung in Dateien gesammelt und gespeichert. Der "Live" -Modus druckt die Metriken in einem ausgewählten Format, z. B. CSV, JSON, zu stdout, wo sie in der Konsole betrachtet und/oder in eine Datei- oder Observabilitätspipeline umgeleitet werden können.
Wenn Sudo nicht möglich ist und ausgeführt wird, wenn der Stammbenutzer nicht möglich ist, verwenden Sie das Flag --noroot in der Befehlszeile, z perfspect metrics --noroot
for i in $(find /sys/devices -name perf_event_mux_interval_ms); do echo 125 > $i; done Sehen Sie sich perfspect metrics -h für die umfangreichen Optionen und Beispiele an.
Der Bericht report generiert Systemkonfigurationsberichte in verschiedenen Formaten. Standardmäßig werden alle Informationskategorien gesammelt:
$ ./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
Es ist möglich, eine Untergruppe von Informationen zu sammeln, indem die Befehlszeilenoptionen bereitgestellt werden. Beachten Sie, dass es durch Angabe des txt -Formats in STDOut sowie in eine Berichtsdatei geschrieben wird.
$ ./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
Sehen Sie sich perfspect report -h .
Speicherbenchmarks, die über den Befehl perfspect report ausgeführt wurden, erfordern die Intel® -Speicherlatenz -Prüferanwendung. Es kann von hier heruntergeladen werden: MLC. Extrahieren Sie nach dem Herunterladen die ausführbare Linux -Datei und platzieren Sie sie in das Verzeichnis von PerfScespect/Tools/x86_64.
Der Befehl telemetry Befehl führt Telemetriesammler auf den angegebenen Zielen aus und generiert dann Berichte über die Ergebnisse. Standardmäßig werden alle Telemetrie -Typen gesammelt. Um Telemetriestypen auszuwählen, sind zusätzliche Befehlszeilenoptionen verfügbar (siehe 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
Standardmäßig zielt Perfspect auf den lokalen Host ab, dh den Host, auf dem Perfspece ausgeführt wird. Remote -Systeme können auch gezielt angegriffen werden, wenn die Remote -Systeme über SSH vom lokalen Host erreichbar sind.
WICHTIG: Stellen Sie sicher, dass der Remote-Benutzer über passwortlose Sudo-Zugriff (oder Root-Berechtigungen) verfügt, um die Funktionen von Perfspect vollständig zu nutzen.
Um ein einzelnes Remote-System mit einem vorkonfigurierten privaten Schlüssel zu zielen:
$ ./perfspect report --target 192.168.1.42 --user fred --key ~/.ssh/fredkey
...
Um ein einzelnes Remote -System mit einem Kennwort anzusprechen:
$ ./perfspect report --target 192.168.1.42 --user fred
[email protected]'s password: ******
...
Um mehr als ein Remote -System zu zielen, wird eine YAML -Datei verwendet, um die erforderlichen Verbindungsparameter zu liefern, z. B.:
$ 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 erstellt die Abhängigkeiten und die App in Docker -Containern, die die erforderlichen Build -Umgebungen bereitstellen. Angenommen, Sie haben Docker in Ihrem Entwicklungssystem installiert.
Erstellen make die App. Angenommen, die Abhängigkeiten wurden zuvor erstellt und Sie haben Go in Ihrem Entwicklungssystem installiert.