Interpretation der CPU-Auslastung für die Leistungsanalyse

CPU-Hardware und -Funktionen entwickeln sich schnell weiter, und Ihre Leistungstest- und Analysemethoden müssen sich möglicherweise ebenfalls weiterentwickeln. Wenn Sie sich auf die Win 7 CPU Auslastung als wichtige Leistungskennzahl verlassen, könnten Sie bei der Interpretation der Daten einige große Fehler machen. Lesen Sie diesen Beitrag, um den vollständigen Überblick zu erhalten; Experten können bis zum Ende des Artikels scrollen, um eine Zusammenfassung der wichtigsten Punkte zu erhalten.

 

Wenn Sie die Art von Person sind, die unseren Server-Performance-Blog besucht, haben Sie diesen Bildschirm wahrscheinlich mehr als ein paar Mal gesehen (oder beobachtet):

 

 

Dies ist natürlich die Registerkarte Leistung im Windows Task Manager. Während Verwirrung über die Bedeutung der Physical Memory Zähler eine regelmäßige Frage ist, die wir im Perf-Team stellen, werde ich heute erklären, wie die CPU-Auslastung (hier als CPU-Auslastung bezeichnet) nicht bedeuten kann, was Sie erwarten würden!

 

Hinweis: Im obigen Screenshot wird die CPU-Auslastung in Prozent oben links angezeigt. Die beiden Diagramme oben rechts zeigen eine kurze Historie der CPU-Auslastung für zwei Kerne. Jeder Kern erhält im Task-Manager seine eigene Grafik.]

 

Die CPU-Auslastung ist eine wichtige Leistungskennzahl. Es kann verwendet werden, um CPU-Leistungsregressionen oder -verbesserungen zu verfolgen, und ist ein nützlicher Datenpunkt für Untersuchungen von Leistungsproblemen. Es ist auch ziemlich allgegenwärtig; es wird an zahlreichen Stellen in der Windows-Betriebssystem-Familie berichtet, darunter Task Manager (taskmgr.exe), Resource Monitor (resmon.exe) und Performance Monitor (perfmon.exe).

 

Das Konzept der CPU-Auslastung war bisher einfach. Angenommen, Sie haben einen Single-Core-Prozessor mit einer Frequenz von 2,0 GHz. Die CPU-Auslastung in diesem Szenario ist der Prozentsatz der Zeit, die der Prozessor für die Arbeit aufwendet (im Gegensatz zum Leerlauf). Wenn dieser 2,0-GHz-Prozessor in einer Sekunde 1 Milliarde Zyklen Arbeit leistet, wird er zu 50% für diese Sekunde genutzt. Ziemlich unkompliziert.

 

Die aktuelle Prozessortechnologie ist viel komplexer. Ein einzelnes Prozessorpaket kann mehrere Kerne mit dynamisch wechselnden Frequenzen, Hardware-Multithreading und gemeinsamen Caches enthalten. Diese technologischen Fortschritte können das Verhalten der Berichtsmechanismen für die CPU-Auslastung verändern und die Schwierigkeit der Leistungsanalyse für Entwickler, Tester und Administratoren erhöhen. Ziel dieses Beitrags ist es, die Feinheiten der CPU-Auslastung auf moderner Hardware zu erklären und den Lesern ein Verständnis dafür zu vermitteln, welche Messungen der CPU-Auslastung bei der Leistungsanalyse verglichen werden können und nicht.

 

Nutzungen der CPU-Auslastung

 

Für diejenigen, die es nicht wissen, wird die CPU-Auslastung typischerweise verwendet, um Regressionen oder Verbesserungen der CPU-Leistung beim Ausführen eines bestimmten Teils des Codes zu verfolgen. Angenommen, ein Unternehmen arbeitet an einer Beta-Version seines Produkts namens “Foo.” Im ersten Testlauf von Foo vor einigen Wochen registrierten sie eine durchschnittliche CPU-Auslastung von 25% während der Ausführung von Foo. Im letzten Build wird jedoch die durchschnittliche CPU-Auslastung während des Testlaufs bei 75% gemessen. Klingt, als wäre etwas schief gelaufen.

 

Die CPU-Auslastung kann auch zur Untersuchung von Performance-Problemen genutzt werden. Wir gehen davon aus, dass sich diese Art von Szenario durchsetzen wird, da immer mehr Entwickler das Windows Performance Toolkit verwenden, um beim Debuggen von Anwendungen zu helfen. Angenommen, Foo wird für die Beta freigegeben. Ein Kunde sagt, dass, wenn Foo läuft, sein System deutlich weniger reagiert. Das könnte ein schwerwiegender Fehler sein, der die Ursache dafür ist. Wenn der Kunde jedoch einen XPerf-Trace sendet, kann die CPU-Auslastung (und viele andere ausgeklügelte Kennzahlen) pro Prozess angezeigt werden. Wenn Foo.exe typischerweise 25% CPU auf ihren Labortestmaschinen verwendet, aber der Kunden-Trace zeigt, dass Foo.exe 99% der CPU auf ihrem System verwendet, könnte dies auf einen Performance-Bug hinweisen.

 

Schließlich hat die CPU-Auslastung erhebliche Auswirkungen auf andere Leistungsmerkmale des Systems, nämlich den Stromverbrauch. Einige mögen denken, dass das Ausmaß der CPU-Auslastung nur dann wichtig ist, wenn Sie auf der CPU bei 100% Engpässe haben, aber das ist überhaupt nicht der Fall. Jeder weitere % der CPU-Auslastung verbraucht etwas mehr Saft aus dem Outlet, was Geld kostet. Wenn Sie die Stromrechnung für das Rechenzentrum bezahlen, ist Ihnen das sicher wichtig!

 

Bevor ich weiter gehe, möchte ich eine spezifische Warnung für die architektonisch interessierten Menschen aussprechen. Früher habe ich den Ausdruck “Zyklen der Arbeit” verwendet. Ich werde es vermeiden, die genaue Bedeutung von “Arbeit” für einen nicht leeren Prozessor zu definieren. Diese Diskussion kann schnell umstritten werden. Kennzahlen wie Instruktionen im Stillstand und Zyklen pro Instruktion können sehr architektur- und anweisungsabhängig sein und stehen nicht im Mittelpunkt dieser Diskussion. Außerdem kann “Arbeit” eine Vielzahl von Aktivitäten beinhalten, einschließlich Gleitkomma- und Ganzzahlberechnung, Registerbewegungen, Lasten, Speicher, Verzögerungen beim Warten auf Speicherzugriffe und IO’s, etc. Es ist praktisch unmöglich, dass jedes Stück Funktionalität auf einem Prozessor während eines bestimmten Zyklus verwendet wird, was zu Argumenten darüber führt, wie viel Funktionalität während “Arbeitszyklen” teilnehmen muss.

 

Nun zu ein paar Definitionen:

 

Prozessor-Paket: Die physikalische Einheit, die an das System-Motherboard angeschlossen wird und einen oder mehrere Prozessorkerne enthält. In diesem Blogbeitrag sind “Prozessor” und “Prozessorpaket” gleichbedeutend.

 

Prozessor-Kern: Eine individuelle Verarbeitungseinheit, die in der Lage ist, Anweisungen auszuführen und Rechenarbeiten durchzuführen. In diesem Blogbeitrag sollen die Begriffe “CPU” und “Kern” dasselbe bedeuten. Ein “Quad-Core”-Prozessor beinhaltet vier Kerne oder CPUs pro Prozessorpaket.

 

Physischer Kern: Ein anderer Name für eine Instanz eines Prozessorkerns.

 

Logischer Kern: Eine spezielle Unterteilung eines physikalischen Kerns in Systeme, die Symmetric Multi-Threading (SMT) unterstützen. Ein logischer Kern teilt einen Teil seines Ausführungspfades mit einem oder mehreren anderen logischen Kernen. Ein Prozessor, der beispielsweise Intels Hyper-Threading-Technologie unterstützt, verfügt über zwei logische Kerne pro physischem Kern. Ein “Quad-Core, Hyper-Threaded”-Prozessor wird 8 logische Kerne und 4 physikalische Kerne haben.

 

Non Uniform Memory Access (NUMA) – eine Art Systemtopologie mit mehreren Speichersteuerungen, die jeweils für eine diskrete Bank des physikalischen Speichers verantwortlich sind. Anfragen an jede Speicherbank im System können unterschiedlich lange dauern, je nachdem, woher die Anfrage stammt und welche Speichersteuerung die Anfrage bearbeitet.

 

NUMA-Knoten: Eine topologische Gruppierung einer Speichersteuerung, zugehöriger CPU’s und zugehöriger Speicherbank auf einem NUMA-System.

 

Hardware-Thread: Ein Codefaden, der auf einem logischen Kern ausgeführt wird.

 

Affinitisation: Der Prozess der manuellen Einschränkung eines Prozesses oder einzelner Threads in einem Prozess auf einen bestimmten Core-, Paket- oder NUMA-Knoten.

 

Virtueller Prozessor: Eine abstrakte Darstellung einer physischen CPU, die einer virtuellen Gastmaschine präsentiert wird.

 

Vergleiche & Fallstricke

 

CPU-Auslastungsdaten sind fast immer nützlich. Es ist eine Information, die Ihnen etwas über die Systemleistung sagt. Das eigentliche Problem tritt auf, wenn Sie versuchen, ein Datenstück in einen Kontext zu stellen, indem Sie es mit einem anderen Datenstück aus einem anderen System oder einem anderen Testlauf vergleichen. Nicht alle Messungen der CPU-Auslastung sind vergleichbar – sogar zwei Messungen an der gleichen Marke und dem gleichen Modell des Prozessors. Es gibt einige mögliche Fehlerquellen für Leute, die die Nutzung für die Leistungsanalyse nutzen; Hardwarefunktionen und Konfiguration, Betriebssystemfunktionen und -konfiguration und Messwerkzeuge können alle die Gültigkeit des Vergleichs beeinflussen.

 

  1. Seien Sie vorsichtig beim Vergleich der CPU-Auslastung verschiedener Prozessorhersteller, -familien oder -modelle.

 

Dies scheint offensichtlich zu sein, aber ich erwähnte eine Fallstudie oben, in der das Foo Performance Team einen Performance-Trace von einem Kunden erhielt, und die CPU-Auslastung war sehr unterschiedlich zu dem, was im Labor gemessen wurde. Die Schlussfolgerung, dass 99% CPU-Auslastung = ein Fehler ist nicht gültig, wenn die Verarbeiter überhaupt unterschiedlich sind, weil man keine Äpfel mit Äpfeln vergleicht. Es kann ein nützlicher Darm-Check sein, aber behandeln Sie es als solchen.

Key Takeaway #1: Prozessor vom Typ A @ 100% Auslastung IST NICHT gleichzusetzen mit Prozessor vom Typ B @ 100% Auslastung

 

  1. Die gemeinsame Nutzung von Ressourcen zwischen physischen Kernen kann die CPU-Auslastung beeinträchtigen (zum Guten oder Schlechten).

 

 

Single-Core-Prozessoren, insbesondere auf Servern, sind selten; Multi-Core-Chips sind heute die Regel. Dies erschwert eine Auslastungskennzahl aus mehreren Gründen. Am wichtigsten ist, dass die Ressourcenteilung zwischen den Prozessorkernen (logisch und physisch) in einem Paket die “Nutzung” zu einem sehr schwer zu definierenden Konzept macht. L3-Caches werden fast immer zwischen den Kernen geteilt; L2 und L1 können auch geteilt werden. Wenn die Ressourcenteilung stattfindet, ist der Nettoeffekt auf die Performance arbeitslastabhängig. Anwendungen, die von größeren Caches profitieren, könnten darunter leiden, wenn der Cache-Platz zwischen den Kernen geteilt wird, aber wenn Ihr Workload eine Synchronisierung erfordert, kann es vorteilhaft sein, dass alle Threads mit gemeinsamem Cache ausgeführt werden. Cache-Misses und andere Cache-Effekte auf die Performance werden im Performance-Zähler-Set nicht explizit angegeben. Die gemeldete Auslastung beinhaltet also die Wartezeit auf Cache- oder Speicherzugriffe, und diese Zeit kann je nach Umfang und Art der Ressourcenteilung wachsen oder schrumpfen.

Key Takeaway #2: 2 HW-Threads auf dem gleichen Paket @ 100% Auslastung IST NICHT gleich 2 HW-Threads auf verschiedenen Paketen @ 100% Auslastung (für besser oder schlechter)

 

  1. Die gemeinsame Nutzung von Ressourcen zwischen logischen Kernen kann die CPU-Auslastung beeinträchtigen (zum Guten oder Schlechten).

 

Die gemeinsame Nutzung von Ressourcen findet auch in Ausführungspipelines statt, wenn SMT-Technologien wie Intels Hyper-Threading vorhanden sind. Logische Kerne sind nicht dasselbe wie physische Kerne – Ausführungseinheiten können zwischen mehreren logischen Kerne geteilt werden. Windows betrachtet jeden logischen Kern als CPU, aber der Begriff “Prozessor 1” in Windows bedeutet nicht, dass das entsprechende Silizium eine voll funktionsfähige, individuelle CPU ist.

 

Betrachten Sie 2 logische Kerne, die sich etwas Silizium auf ihrem Ausführungspfad teilen. Wenn einer der logischen Kerne untätig ist und der andere mit vollem Durchgang läuft, haben wir eine 100%ige CPU-Auslastung für einen logischen Kern. Berücksichtigen Sie nun, wann beide logischen Kerne aktiv sind und die volle Bohrung laufen. Können wir wirklich die doppelte “Arbeit” des vorherigen Beispiels erreichen? Die Antwort ist stark abhängig von den Workload-Eigenschaften und der Interaktion der Workloads mit den gemeinsam genutzten Ressourcen. SMT ist eine Funktion, die die Leistung in vielen Szenarien verbessert, aber es macht die Bewertung von Leistungskennzahlen interessanter……

Key Takeaway #3: 2 HW-Threads auf dem gleichen logischen Kern @ 100% Auslastung IST NICHT gleich 2 HW-Threads auf verschiedenen logischen Kernen @ 100% Auslastung (für besser oder schlechter)

 

  1. NUMA-Latenzen können die CPU-Auslastung beeinträchtigen (zum Guten oder Schlechten).

 

Ein zunehmender Prozentsatz der Systeme verfügt über eine NUMA-Topologie. NUMA und die gemeinsame Nutzung von Ressourcen bedeuten, dass die Systemtopologie dramatische Auswirkungen auf die Gesamtleistung der Anwendung haben kann. Wie bei den beiden vorangegangenen Fallstricken sind die NUMA-Effekte auf die Performance arbeitslastabhängig.

 

Wenn Sie sehen möchten, welche Kerne zu welchen NUMA-Knoten gehören, klicken Sie mit der rechten Maustaste auf einen Prozess in der Registerkarte “Prozesse” des Task Managers und klicken Sie auf “Affinität einstellen….”. Sie sollten ein ähnliches Fenster wie das untenstehende erhalten, das das CPU-zu-Knoten-Mapping anzeigt, wenn ein Server NUMA-basiert ist. Eine weitere Möglichkeit, diese Informationen zu erhalten, ist die Ausführung des Befehls “!NUMA” im Windows Debugger (windbg.exe).

Key Takeaway #4: 2 HW-Gewinde auf dem gleichen NUMA-Knoten @ 100% Auslastung IST NICHT gleich 2 HW-Gewinden auf verschiedenen NUMA-Knoten @ 100% Auslastung (für besser oder schlechter)

 

  1. Das Prozessor-Power-Management (PPM) kann dazu führen, dass die CPU-Auslastung künstlich hoch erscheint.

 

Power-Management-Funktionen führen zu einer höheren Komplexität der CPU-Auslastungsprozentsätze. Das Prozessor-Power-Management (PPM) passt die CPU-Leistung dem Bedarf an, indem es die Frequenz und Spannung der CPU’s skaliert. Bei Berechnungsaufgaben mit geringer Intensität wie der Textverarbeitung benötigt ein Kern, der nominal mit 2,4 GHz läuft, selten alle 2,4 Milliarden potenziellen Zyklen pro Sekunde. Wenn weniger Zyklen benötigt werden, kann die Frequenz reduziert werden, manchmal deutlich (bis zu 28% des Maximums). Dies ist auf dem Markt sehr verbreitet – PPM ist auf fast jedem heute ausgelieferten Standardprozessor vorhanden (mit Ausnahme einiger “stromsparender” Prozessor-SKUs), und Windows wird mit PPM ausgeliefert, das standardmäßig in Vista, Windows 7 und Server 2008 / R2 aktiviert ist.

 

In Umgebungen, in denen sich die CPU-Frequenz dynamisch ändert (Erinnerung: Dies ist eher wahrscheinlich als nicht), sollten Sie sehr vorsichtig sein, wenn Sie den CPU-Auslastungszähler interpretieren, der vom Performance Monitor oder einem anderen aktuellen Windows-Monitoring-Tool gemeldet wird. Die Nutzungswerte werden auf der Grundlage der momentanen (oder möglicherweise durchschnittlichen) Betriebsfrequenz und nicht auf der Grundlage der maximalen Nennfrequenz berechnet.

 

Beispiel: In einer Situation, in der Ihre CPU nur wenig ausgelastet ist, kann Windows die Betriebsfrequenz auf 50% oder 28% des Maximums reduzieren. Wenn die CPU-Auslastung berechnet wird, verwendet Windows diesen Referenzpunkt als “maximale” Auslastung. Wenn eine CPU mit einer Nennleistung von 2,0 GHz mit 500 MHz läuft und alle 500 Millionen verfügbaren Zyklen genutzt werden, wird die CPU-Auslastung als 100% angezeigt. Ausgehend von dem Beispiel verwendet eine CPU, die zu 50% mit 28% ihrer maximalen Frequenz ausgelastet ist, etwa 14% der maximal möglichen Zyklen während des gemessenen Zeitintervalls, aber die CPU-Auslastung würde im Leistungszähler mit 50% und nicht mit 14% angezeigt.

 

Die momentanen Frequenzen der CPUs können Sie im Tool “Performance Monitor” sehen. Sehen Sie sich das Objekt “Processor Performance” an und wählen Sie den Zähler “% of Maximum Frequency”.

Nebenbemerkung zu Perfmon und Power Management: Die Zähler “Processor Frequency” und “% of Maximum Frequency” sind augenblickliche Samples, nicht gemittelte Samples. Über ein Abtastintervall von einer Sekunde kann sich die Frequenz dutzende Male ändern. Aber die einzige Frequenz, die Sie sehen werden, ist die momentane Probe, die jede Sekunde genommen wird. Auch hier sollten ETW oder andere granularere Messwerkzeuge eingesetzt werden, um statistisch bessere Daten für die Berechnung der Auslastung zu erhalten.]

Schlüsselanhänger #5: 2 HW-Gewinde bei 100% Auslastung und 50% der Nennfrequenz IST NICHT gleich 2 HW-Gewinden bei 100% Auslastung und 100% der Nennfrequenz.

Schlüsselanhänger #6: 4 HW-Gewinde bei 100% Auslastung und 50% der Nennfrequenz IST NICHT gleich 2 HW-Gewinden bei 100% Auslastung und 100% der Nennfrequenz.

 

  1. Spezielle Perfmon-Zähler sollten verwendet werden, um die CPU-Auslastung in virtualisierten Umgebungen zu erhalten.

 

Virtualisierung bringt mehr Komplexität mit sich, da die Zuordnung von Arbeit zu Kernen vom Hypervisor und nicht vom Gastbetriebssystem erfolgt. Wenn Sie CPU-Auslastungsinformationen über den Leistungsmonitor anzeigen möchten, sollten Sie spezifische hypervisor-fähige Leistungsindikatoren verwenden. In der Root-Partition eines Windows-Servers mit Hyper-V kann der Zähler “Hypervisor Root Virtual Processor % Total Runtime” verwendet werden, um die CPU-Auslastung der virtuellen Prozessoren zu verfolgen, denen eine VM zugeordnet ist. Für eine tiefere Analyse von Hyper-V Performance Countern und Prozessorauslastung in virtualisierten Szenarien.

Schlüssel zum Erfolg #7: In einer virtualisierten Umgebung sollten einzigartige Perfmon-Zähler verwendet werden, die vom Hypervisor für die Root-Partition bereitgestellt werden, um genaue Informationen zur CPU-Auslastung zu erhalten.

 

  1. “% Prozessorzeit” Perfmon-Zählerdaten sind für kurze Testläufe möglicherweise nicht statistisch signifikant.

 

Für jemanden, der Leistungstests und -analysen durchführt, ist die Fähigkeit, CPU-Auslastungsdaten über die Zeit zu protokollieren, von entscheidender Bedeutung. Ein Datensammler-Set kann über logman.exe konfiguriert werden, um zu diesem Zweck den Zähler “% Prozessorzeit” im Objekt “Prozessorinformation” zu protokollieren. Leider haben die auf diese Weise protokollierten Zähler eine relativ grobe Granularität in Bezug auf die Zeitintervalle; das Mindestintervall beträgt eine Sekunde. Um die statistische Signifikanz der Nutzungsdaten zu gewährleisten, sind relativ lange Stichprobengrößen zu verwenden. Wenn Sie eine höhere Präzision benötigen, können Out-of-Band-Windows-Tools wie XPerf im Windows Performance Toolkit die CPU-Auslastung mit einer feineren zeitlichen Granularität über die Event Tracing for Windows (ETW)-Infrastruktur messen und verfolgen.

Schlüssel zum Erfolg #8: Perfmon ist ein guter Ausgangspunkt für die Messung der Auslastung, hat aber mehrere Einschränkungen, die es weniger als optimal machen können. Berücksichtigen Sie Alternativen wie XPerf im Windows Performance Toolkit.

 

Best Practices für Leistungstests und -analysen unter Einbeziehung der CPU-Auslastung

 

Wenn Sie die Wahrscheinlichkeit minimieren möchten, dass Hardware- und Betriebssystemfunktionen oder Messwerkzeuge Ihre Nutzungsmessungen verzerren, sollten Sie die folgenden Schritte beachten:

 

  1. Wenn Sie beginnen, ein Performance-Problem zu beheben oder versuchen, Code für die Performance zu optimieren, beginnen Sie mit einer möglichst einfachen Konfiguration und fügen Sie später wieder Komplexität in den Mix ein.
  2. Verwenden Sie die Energierichtlinie “High Performance” unter Windows oder deaktivieren Sie Energieverwaltungsfunktionen im BIOS, um Änderungen der Prozessorfrequenz zu vermeiden, die die Leistungsanalyse beeinträchtigen können.
  3. Schalten Sie SMT-, Overclocking und andere Prozessortechnologien aus, die die Interpretation von CPU-Auslastungskennzahlen beeinflussen können.
  4. Affinitisieren von Anwendungs-Threads zu einem Kern. Dies erhöht die Wiederholgenauigkeit und reduziert die Schwankungen von Run-to-Run. Affinitisationsmasken können programmgesteuert, von der Kommandozeile aus oder über die GUI im Task-Manager festgelegt werden….
  5. Testen oder betreiben Sie diese Konfiguration NICHT unendlich lange in der Produktion. Sie sollten bestrebt sein, in einer Out-of-Box- oder geplanten Produktionskonfiguration zu testen, wobei nach Möglichkeit alle geeigneten Leistungs- und Leistungsmerkmale aktiviert sind.

Wichtiger Hinweis #9: Wenn Sie Leistungsprobleme oder Funktionen analysieren, beginnen Sie mit einer so einfachen Systemkonfiguration wie möglich, aber stellen Sie sicher, dass Sie irgendwann auch die typische Kundenkonfiguration analysieren.

  1. Verstehen Sie die Systemtopologie und wo Ihre Anwendung auf dem System in Bezug auf Kerne, Pakete und Knoten läuft, wenn Ihre Anwendung nicht explizit affinisiert ist. Performance-Probleme können plötzlich in komplexen Hardware-Topologien auftreten; ETW und XPerf im Windows Performance Toolkit können Ihnen helfen, diese Informationen zu überwachen.
  2. Der Neustart ändert sich im Allgemeinen dort, wo den CPUs auf einer Maschine unbefugte Arbeit zugewiesen wird. Dies kann dazu führen, dass sich topologiebezogene Leistungsprobleme intermittierend reproduzieren, was die Schwierigkeit erhöht, Probleme zu beheben und zu beheben. Reboot- und Wiederholungstests mehrmals oder explizit für bestimmte Kerne und Knoten, um Probleme im Zusammenhang mit der Systemtopologie zu vermeiden. Dies bedeutet nicht, dass die endgültige Implementierung erforderlich ist, um Thread-Affinität zu verwenden, oder dass Affinität verwendet werden sollte, um potenzielle Probleme zu umgehen; sie verbessert nur die Wiederholbarkeit und Klarheit beim Testen und Debuggen.
  3. Verwenden Sie die richtigen Tools zur Leistungsmessung für den jeweiligen Einsatzzweck. Wenn Ihre Sample-Sets einen langen Zeitraum abdecken, können Perfmon-Zähler akzeptabel sein. ETW probiert den Systemzustand in der Regel häufiger und entsprechend genauer als Perfmon, so dass er auch bei kürzeren Proben effektiver ist. Natürlich gibt es einen Kompromiss – je nach Anzahl der aktivierten ETW “Haken” können Sie am Ende deutlich mehr Daten sammeln und Ihre Trace-Dateien können groß sein.

Schließlich ist zu beachten, dass diese Probleme nicht auf die Windows-Betriebssystemfamilie beschränkt sind. Die Zunahme der Prozessorfunktionen und der Komplexität in den letzten zehn Jahren hat die Leistungsanalyse, -prüfung und -optimierung zu einer Herausforderung auf allen Plattformen gemacht, unabhängig von Betriebssystem und Prozessorhersteller.

Und wenn Sie die CPU-Auslastung zwischen zwei verschiedenen Testläufen oder Systemen vergleichen, verwenden Sie die Anleitung in diesem Beitrag, um zu überprüfen, ob der Vergleich sinnvoll ist. Wenn Sie gültige Vergleiche anstellen, werden Sie mehr Zeit damit verbringen, gültige Performance-Probleme zu verfolgen.

Zusammenfassung der wichtigsten Takeaways

Key Takeaway #1: Prozessor vom Typ A @ 100% Auslastung IST NICHT gleichzusetzen mit Prozessor vom Typ B @ 100% Auslastung

Key Takeaway #2: 2 HW-Threads auf dem gleichen Paket @ 100% Auslastung IST NICHT gleich 2 HW-Threads auf verschiedenen Paketen @ 100% Auslastung (für besser oder schlechter)

Key Takeaway #3: 2 HW-Threads auf dem gleichen logischen Kern @ 100% Auslastung IST NICHT gleich 2 HW-Threads auf verschiedenen logischen Kernen @ 100% Auslastung (für besser oder schlechter)

Key Takeaway #4: 2 HW-Gewinde auf dem gleichen NUMA-Knoten @ 100% Auslastung IST NICHT gleich 2 HW-Gewinden auf verschiedenen NUMA-Knoten @ 100% Auslastung (für besser oder schlechter)

Key Takeaway #5: 2 HW-Gewinde bei 100% Auslastung und 50% der Nennfrequenz IST NICHT gleich 2 HW-Gewinden bei 100% Auslastung und 100% der Nennfrequenz.

Key Takeaway #6: 4 HW-Gewinde bei 100% Auslastung und 50% der Nennfrequenz IST NICHT gleich 2 HW-Gewinden bei 100% Auslastung und 100% der Nennfrequenz.

Schlüssel zum Erfolg #7: In einer virtualisierten Umgebung sollten einzigartige Perfmon-Zähler verwendet werden, die vom Hypervisor für die Root-Partition bereitgestellt werden, um genaue Informationen zur CPU-Auslastung zu erhalten.

Key Takeaway #8: Perfmon ist ein guter Ausgangspunkt für die Messung der Auslastung, hat aber mehrere Einschränkungen, die es weniger als optimal machen können. Berücksichtigen Sie Alternativen wie XPerf im Windows Performance Toolkit.

Key Takeaway #9: Wenn Sie Leistungsprobleme oder Funktionen analysieren, beginnen Sie mit einer so einfachen Systemkonfiguration wie möglich, aber stellen Sie sicher, dass Sie irgendwann auch die typische Kundenkonfiguration analysieren.

LG G4 Überprüfung: Das große Smartphone mit abnehmbarem Akku UND microSD-Kartensteckplatz.

Das LG G4 ist nicht das schnellste oder eleganteste Smartphone, aber es ist das praktischste der marktführenden Flaggschiff-Handsets.

Vor einigen Jahren, das LG G4 wäre eines von einer Reihe von großen Smartphones gewesen, die sowohl einen microSD-Steckplatz als auch einen abnehmbaren Akku haben; heutzutage ist es eine sehr seltene Sache. Von allen großen Smartphones, die 2015 auf den Markt kamen, können nur das Samsung Galaxy S5 Neo, das Microsoft Lumia 950 und 950 XL seine Flexibilität voll ausspielen.

Diese einfache Tatsache allein wird ausreichen, um Horden von potenziellen Käufern davon zu überzeugen, dieses Flaggschiff-Smartphone an die Spitze ihrer Auswahllisten zu bringen, unabhängig vom Rest seiner Fähigkeiten. Glücklicherweise ist das LG G4 Review kein Ein-Trick-Pony, es hat viel mehr zu empfehlen.

LG G4 Überprüfung: Design

Das Design des LG G4 geht nicht viel Neues ein – zumindest nicht in Bezug auf Größe und Form. Es ist ein 5,5 Zoll Smartphone und es ist kein besonders schlankes oder leichtes Gerät. Die Rückseite des Telefons ist leicht gebogen, was bedeutet, dass es gut in Ihre Hand passt. Die Lautstärke- und Einschalttasten befinden sich in der Mitte der Rückwand, direkt unter dem Objektiv der Kamera – genau wie bei ihrem Vorgänger, dem LG G3.

Die Außenmaße haben sich nicht wesentlich verändert. Das LG G4 ist etwas größer und etwas breiter als das G3, mit 149 x 75 x 8,9 mm, aber das sind keine Unterschiede, die Sie mit bloßem Auge bemerken werden.

Dreht man ihn jedoch auf die Seite, beginnen sich die Unterschiede zu zeigen. Erstens verfügt das G4 über einen “Slim Arc”-Bildschirm, der sich sanft von oben nach unten krümmt – ein wenig wie die LG G Flex-Modelle, nur dass die Kurve nicht ganz so extrem ist.

Das dramatischste neue “Merkmal”, das von LG eingeführt wurde und vielleicht vom Motorola Moto X (2014) inspiriert wurde, ist das Material, das im Design verwendet wird. Vielleicht haben Sie die braune, lederbezogene Ausgabe bereits in dem von der Firma veröffentlichten Teasermaterial gesehen.

Nun, das ist ein Standard (wenn auch Premium) Finish auf dem G4, und es ist nicht nur in Braun erhältlich. Es gibt eine ganze Reihe von verschiedenen Farben, die alle sehr ansprechend aussehen, mit präzisen, engen Nähten, die über die Mitte verlaufen und dem G4-Logo, das in der rechten unteren Ecke in das Leder geprägt ist.

Je nach Farbe gibt es sogar Unterschiede in der Art des verwendeten Leders, mit einem glatten, eng gemaserten Aktentaschenfinish bei den braunen und bordeauxfarbenen Versionen und einem gröberen, offener gemaserten Leder bei den Modellen Hellblau, Schwarz und Hellbraun.

Etwas weniger interessant ist, dass das LG G4 auch in Kunststoff erhältlich ist, in einer ansprechenden Farbpalette, die ein glänzendes “Keramik”-Weiß und Titangrau umfasst, mit einem subtilen Diamantmuster, das in die Schale eingearbeitet ist.

Wir vermuten, dass die meisten Menschen, die sich für ein LG G4 entscheiden, sich für die Lederverarbeitung entscheiden werden, die sich sehr gut anfühlt und gut aussieht; insbesondere die schwarze Version ist fantastisch.