(Dieser Artikel wurde ursprünglich von Ampere Computing veröffentlicht)
Ihre Anwendung wird auf einer neuen Cloud -Instanz oder einem neuen Cloud -Instanz (oder SUT, System, das zu testen) ausgeführt, Sie finden Leistungsprobleme oder möchten eine optimale Leistung unter den verfügbaren Systemressourcen sicherstellen. In diesem Artikel werden einige grundlegende Fragen erörtert, die Sie stellen sollten, und Möglichkeiten, sie zu beantworten.
Voraussetzung: Verstehen Sie Ihre virtuelle Maschine oder Ihren Server
Sie müssen die verfügbaren Systemressourcen kennen, bevor Sie mit einer Fehlerbehebung oder einer Leistungsanalyse -Übung beginnen. Die Leistung auf Systemebene läuft normalerweise auf vier Komponenten und ihre Interaktionen - CPU, Speicher, Netzwerk und Festplatte. Siehe auch Brendan Greggs ausgezeichneter Artikel "Linux Performance Analysis: 60000 Millisekunden -Schnellergebnishandbuch", ein guter Ausgangspunkt für die schnelle Bewertung von Leistungsproblemen.
In diesem Artikel wird erläutert, wie die Leistungsprobleme tiefer verstanden werden können.
Bestätigen Sie den CPU -Typ
Führen Sie den Befehl $lscpu
aus, der den CPU-Typ, die CPU-Frequenz, die Anzahl der Kerne und andere CPU-bezogene Informationen anzeigt:
<code>ampere@colo1:~$ lscpu Architecture: aarch64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 160 On-line CPU(s) list: 0-159 Thread(s) per core: 1 Core(s) per socket: 80 Socket(s): 2 NUMA node(s): 2 Vendor ID: ARM Model: 1 Model name: Neoverse-N1 Stepping: r3p1 CPU max MHz: 3000.0000 CPU min MHz: 1000.0000 BogoMIPS: 50.00 L1d cache: 10 MiB L1i cache: 10 MiB L2 cache: 160 MiB NUMA node0 CPU(s): 0-79 NUMA node1 CPU(s): 80-159 Vulnerability Itlb multibit: Not affected Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Not affected Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Vulnerability Spectre v1: Mitigation; __user pointer sanitization Vulnerability Spectre v2: Mitigation; CSV2, BHB Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Not affected Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs </code>
Bestätigen Sie die Speicherkonfiguration
Führen Sie den Befehl $free
aus, der Informationen über den physischen Speicher und die Gesamtmenge des Swap -Speichers (einschließlich einer Aufschlüsselung der Speicherauslastung) liefert. Führen Sie den Multichase -Benchmark aus, um Latenz, Speicherbandbreite und Lastlatenz zu bestimmen/SUT:
<code>ampere@colo1:~$ free total used free shared buff/cache available Mem: 130256992 3422844 120742736 4208 6091412 125852984 Swap: 8388604 0 8388604 </code>
Bewerten Sie die Netzwerkfunktionen
Führen Sie den Befehl $ethtool
aus, mit dem Informationen zu den Einstellungen für die NIC -Kartenhardware enthalten sind. Es wird auch verwendet, um Netzwerkgeräte -Treiber und Hardwareeinstellungen zu steuern. Wenn Sie eine Workload in einem Client-Server-Modell ausführen, ist es am besten, die Bandbreite und Latenz zwischen dem Client und dem Server zu verstehen. Um die Bandbreite zu bestimmen, reicht ein einfacher iperf3 -Test aus, und für die Latenz kann ein einfacher Ping -Test diesen Wert liefern. In den Kunden-Server-Einstellungen wird auch empfohlen, die Anzahl der Netzwerke auf ein Minimum zu halten. Traceroute ist ein netzwerkdiagnostischer Befehl, mit dem das Routing angezeigt wird und die Übertragungsverzögerung von Paketen im Netzwerk misst:
<code>ampere@colo1:~$ ethtool -i enp1s0np0 driver: mlx5_core version: 5.7-1.0.2 firmware-version: 16.32.1010 (RCP0000000001) expansion-rom-version: bus-info: 0000:01:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: no supports-register-dump: no supports-priv-flags: yes> </code>
Verstehen Sie die Speicherinfrastruktur
Bevor Sie mit der Ausführung einer Workload beginnen, ist es wichtig, die Festplattenfunktionalität zu verstehen. Durch das Verständnis des Durchsatzes und der Latenz von Festplatten- und Dateisystemen können Sie Ihre Workloads effizient planen und entwerfen. Flexible E/O (oder "FIO") ist ein ideales Instrument zur Bestimmung dieser Werte.
Geben Sie nun die Top Ten Fragen ein
Eine der Hauptkomponenten der Gesamtbesitzkosten ist die CPU. Daher lohnt es sich, die Effizienz der CPU -Verwendung zu verstehen. Eine Leerlauf -CPU bedeutet normalerweise, dass es externe Abhängigkeiten gibt, z. B. auf die Festplatte oder den Netzwerkzugriff. Es wird immer empfohlen, die CPU -Nutzung zu überwachen und zu überprüfen, ob die Kernverwendung gleichmäßig ist.
Das folgende Bild zeigt eine Beispielausgabe des Befehls $top -1
.
modernes CPUs Verwenden Sie den P -Zustand, um die Frequenz und Spannung ihres Betriebs anzupassen, um den CPU -Stromverbrauch zu verringern, wenn keine höheren Frequenzen erforderlich sind. Dies wird als dynamische Spannung und Frequenzskalierung (DVFS) bezeichnet und vom Betriebssystem verwaltet. In Linux wird der P -Zustand vom CPUFREQ -Subsystem verwaltet, das verschiedene Algorithmen (als Regulierungsbehörden genannt) verwendet, um die Frequenz der CPU zu bestimmen. Im Allgemeinen ist es für leistungsempfindliche Anwendungen am besten sicher, dass Sie einen Leistungsregulator verwenden, und der folgende Befehl verwendet das Cpupower-Dienstprogramm, um dies zu erreichen. Denken Sie daran, dass die Frequenznutzung der CPU ausgeführt werden sollte
<code>ampere@colo1:~$ lscpu Architecture: aarch64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 160 On-line CPU(s) list: 0-159 Thread(s) per core: 1 Core(s) per socket: 80 Socket(s): 2 NUMA node(s): 2 Vendor ID: ARM Model: 1 Model name: Neoverse-N1 Stepping: r3p1 CPU max MHz: 3000.0000 CPU min MHz: 1000.0000 BogoMIPS: 50.00 L1d cache: 10 MiB L1i cache: 10 MiB L2 cache: 160 MiB NUMA node0 CPU(s): 0-79 NUMA node1 CPU(s): 80-159 Vulnerability Itlb multibit: Not affected Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Not affected Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Vulnerability Spectre v1: Mitigation; __user pointer sanitization Vulnerability Spectre v2: Mitigation; CSV2, BHB Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Not affected Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs </code>
<code>ampere@colo1:~$ free total used free shared buff/cache available Mem: 130256992 3422844 120742736 4208 6091412 125852984 Swap: 8388604 0 8388604 </code>
Linux -Anwendung oben kann verwendet werden, um herauszufinden, wie lange die Benutzer- und Kernelzeit verbraucht wird, wie unten gezeigt.
mpstat
Die CPU -Verwendung für jede CPU identifizieren und das Zeit-/Kernzeitverhältnis von Benutzer, %USR, %sys und %idle anmelden, sind die Schlüsselwerte. Diese Schlüsselwerte können auch dazu beitragen, "Hotspots" -CPUs zu identifizieren, die möglicherweise durch Einzelanträge oder Interrupt-Mappings verursacht werden.
Wenn Sie den Server verwalten, müssen Sie möglicherweise eine neue Anwendung installieren, oder Sie können feststellen, dass die Anwendung begonnen hat, sich zu verlangsamen. Um die Systemressourcen zu verwalten und die Systemspeicher- und Systemspeicherauslastung zu verstehen, die das System installiert hat, ist der Befehl $free
ein wertvolles Tool. $vmstat
ist auch ein wertvolles Instrument zur Überwachung der Speicherauslastung, insbesondere wenn Sie den Speicher mit virtuellem Speicher aktiv austauschen.
free
. Der Befehl Linux free
zeigt Speicher- und Austauschstatistiken an.
Ausgabe zeigt den Gesamtspeicher, den verwendeten Speicher und den verfügbaren Speicher des Systems an. Eine wichtige Spalte ist der verfügbare Wert, der den für die Anwendung verfügbaren Speicher zeigt und ausgetauscht werden muss. Es berücksichtigt auch Speicher, der nicht sofort recycelt werden kann.
vmstat
. Dieser Befehl bietet eine hochrangige Ansicht des Systemspeichers, der Gesundheit, einschließlich derzeit verfügbarer Speicher- und Paging-Statistiken.
$vmstat
zeigt den aktiven Speicher (Paging) an.
Diese Befehle drucken eine Zusammenfassung des aktuellen Status. Die Spalte standardmäßig Kilobytes, die:
sindWenn SI und so ungleich Null ist, steht das System unter Speicherdruck und tauscht Speicher gegen das Swap-Gerät aus.
Um genügend Speicherbandbreite zu verstehen, erhalten Sie zuerst den Wert "Maximal Memory Bandwidth" des Systems. Der Wert "Maximale Speicherbandbreite" kann auf folgende Weise gefunden werden:
Dieser Wert repräsentiert die theoretische maximale Bandbreite des Systems, auch als "Burst -Rate" bezeichnet. Sie können jetzt Multichase- oder Bandbreiten -Benchmarks auf Ihrem System ausführen und diese Werte überprüfen.
Hinweis: Die Burst -Rate hat sich als nicht nachhaltig befunden und die implementierten Werte können geringfügig kleiner sein als die berechneten Werte.
Wenn Sie eine Workload auf einem Server im Rahmen der Leistungsabstimmung oder der Fehlerbehebung ausführen, möchten Sie wissen, auf welchem CPU -Kern ein bestimmter Prozess derzeit geplant ist und wie die Ressourcenverwendung von Prozessen, die auf diesem CPU -Kern ausgeführt werden,. Der erste Schritt besteht darin, den Prozess im CPU -Kern zu finden. Dies kann mit HTOP erfolgen. CPU -Werte werden in der Standardanzeige von HTOP nicht reflektiert. Um den CPU -Kernwert zu erhalten, starten Sie $htop
aus der Befehlszeile, drücken Sie f2 Taste, gehen Sie zu Spalten und fügen Sie den Prozessor unter verfügbaren Spalten hinzu. Die derzeit von jedem Prozess verwendete "CPU -ID" wird unter der Spalte "CPU" angezeigt.
So konfigurieren Sie $htop
, um CPU/Core anzuzeigen:
Core 4-6 anzeigen Der Befehl $htop
, um den Maximalwert zu erreichen (HTOP-Kernzahl beginnt bei "1" anstelle von "0"):
$mpstat
Befehl zur Überprüfung ausgewählter Statistikkerne:
Sobald Sie den CPU -Kern identifiziert haben, können Sie den Befehl $mpstat
ausführen, um die Statistiken für jede CPU zu überprüfen und den einzelnen Hotspot/belebten CPUs zu überprüfen. Dies ist ein Multiprozessor -Statistik -Tool, das Statistiken für jede CPU (oder Kern) meldet. Weitere Informationen zu $mpstat
finden Sie in "Wie verbringe ich Zeit in meiner Bewerbung im Vergleich zur Kernel -Zeit?"
Netzwerk -Engpässe können bereits vor der Sättigung anderer Ressourcen auf dem Server auftreten. Dieses Problem wird beim Ausführen von Workloads im Client-Server-Modell entdeckt. Das erste, was Sie tun müssen, ist zu bestimmen, wie Ihr Netzwerk aussieht. Latenz und Bandbreite zwischen Kunden und Servern sind besonders wichtig. Tools wie Iperf3, Ping und Traceroute sind einfache Tools, mit denen Sie die Einschränkungen Ihres Netzwerks ermitteln können. Sobald die Netzwerkbeschränkungen identifiziert wurden, können Tools wie $dstat
und $nicstat
Ihnen helfen, die Netzwerknutzung zu überwachen und Systeme Engpässe aufgrund des Netzwerks zu identifizieren.
dstat
. Dieser Befehl wird verwendet, um Systemressourcen zu überwachen, einschließlich CPU -Statistiken, Festplattenstatistiken, Netzwerkstatistiken, Paging -Statistiken und Systemstatistiken. Verwenden Sie zur Überwachung der Netzwerknutzung die Option -n.
Dieser Befehl bietet den Durchsatz der vom System empfangenen und gesendeten Pakete.
nicstat
. Dieser Befehl druckt Netzwerkschnittstellenstatistiken, einschließlich Durchsatz und Nutzung.
Spalten umfassen:
Wie Netzwerke können Festplatten auch der Grund für eine schlechte Anwendungsleistung sein. Bei der Messung der Datenträgerleistung betrachten wir die folgenden Metriken:
Eine gute Regel laut Festplatte, ob die Leistung den Anforderungen der Anwendung entspricht. Flexible E/O ist ein ideales Werkzeug zur Bestimmung dieser Werte.
Nach der Ausführung der Anwendung können Sie und $iostat
zur Überwachung der Disk -Ressourcenauslastung in Echtzeit verwenden. $dstat
Der Befehl
zeigt E/A -Statistiken für jede Festplatte an und bietet Metriken für die Workload -Charakterisierung, -ausstattung und -sättigung. iostat
Für jedes in der nachfolgende Zeile angezeigte Festplattengerät werden grundlegende Details in der Spalte angezeigt:
dstat
Befehle werden verwendet, um Systemressourcen zu überwachen, einschließlich CPU -Statistiken, Festplattenstatistiken, Netzwerkstatistiken, Paging -Statistiken und Systemstatistiken. Verwenden Sie zur Überwachung der Festplattennutzung die Option -D. Diese Option zeigt die Gesamtzahl der Lese- (Lese-) und Schreib- und Schreibvorgänge auf der Festplatte an.
Das folgende Bild zeigt schreibintensive Workloads.
Nichtkonsistenten Speicherzugriff (NUMA) ist ein Computerspeicherdesign für die Multiprozessierung, wobei die Speicherzugriffszeit vom Speicherort relativ zum Prozessor abhängt. Unter NUMA kann ein Prozessor schneller auf seinen eigenen lokalen Speicher zugreifen als nicht-lokaler Gedächtnis (lokaler Speicher eines anderen Prozessors oder Speichers, der zwischen den Prozessoren geteilt wird). Die Vorteile der NUMA beschränken sich auf Workloads, insbesondere auf Servern, bei denen Daten häufig eng mit bestimmten Aufgaben oder Benutzern zusammenhängen.
Auf NUMA -Systemen wird der Prozessor umso langsamer der Prozessor auf diese Speicherbank zugreifen, je größer der Abstand zwischen dem Prozessor und seiner Speicherbank ist. Für leistungsempfindliche Anwendungen sollte das Systembetriebssystem Speicher von der nächsten Speicherbank zuweisen. Um die Speicherzuweisung eines Systems oder eines Prozesses in Echtzeit zu überwachen, ist $numastat
ein großartiges Werkzeug.
numastat
enthält Statistiken für nicht konsistente Speicherzugriffssysteme (NUMA). Diese Systeme sind normalerweise Systeme mit mehreren CPU -Slots.
Das Linux -Betriebssystem versucht, Speicher auf dem nächsten NUMA -Knoten zuzuweisen, und zeigt die aktuelle Statistiken für die Speicherzuweisung an. $numastat
Der Befehl
kann auch verwendet werden, um die NUMA -Verteilung eines Prozesses anzuzeigen. $numastat -p <process></process>
ist ein Befehlszeilen -Tool, das jeden einzelnen Prozess überwacht, der auf dem System ausgeführt wird. $pidstat
Die Haupt -CPU -Benutzer werden in die Zeit- und Systemzeit der Benutzer unterteilt. pidstat
$pidstat -p
kann auch ausgeführt werden, um Daten zu einem bestimmten Prozess zu erfassen.
Bitte wenden Sie sich an unser Expert -Verkaufsteam, um Partnerschaften zu erhalten, oder erfahren Sie, wie Sie über unser Entwicklerzugriffsprogramm auf das Ampere -System zugreifen können.
Das obige ist der detaillierte Inhalt von10 wichtige Fragen beim Ausführen von Ampere Altra-basierten Instanzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!