mag1301
Goto Top

Geringere CPU- und Prozess-Auslastung bei Windows 11

Ich will die CPU- und Prozess-Auslastung einer Anwendung Betriebssystem übergreifend überwachen.

Zum Erzeugen von Stress auf mehreren baugleichen PCs (G5 i5-9500 @3 GHz) verwende ich z.B. HeavyLoad oder WinZip mit unterschiedlichen Einstellungen bei CPU und GPU, aber auch selber geschriebene multithreaded Anwendungen.

Ich beobachte, dass Windows 11 (22H2) deutlich geringere CPU und Prozess Auslastung (teilweise nur die Hälfte) anzeigt, als Windows 10 (20H2). Dieses Verhalten kann man bei mehreren Tools beobachten:
- Leistungsüberwachung, Indikator "\Prozess(_Total)\Prozessorzeit (%)"
- Sysinternals ProcessExplorer
- Win32API, Befehle: GetSystemTimes, NtQuerySystemInformation
- psutil.zip(Python Bibliothek)

Die CPU Gesamt-Auslastung vom TaskManager und des RessourcenMonitors sind Betriebssystem übergreifend gleich, unterscheiden sich aber von den oben genannten Tools. Da ich die Performance automatisiert auslesen und überwachen möchte, bringen mit TaskManager und Co. nicht weiter.

Dass Windows 11 schneller geworden ist, als Windows 10, schließe ich aus. Dafür hab ich unterschiedliche Benchmarks durchgeführt. Auch entsprechende Fachartikeln bestätigen das. Die Energieeinstellungen der Betriebssysteme sind identisch. Die Treiber hab ich auch geprüft.

Wie kann man diesen Unterschied erklären?
Warum zeigen TaskManager und RessourcenMonitor andere Werte an, als die Leistungsüberwachung?
Welche Möglichkeit gibt es, die Performance Ergebnisse einer Anwendung zwischen Windows Versionen zu vergleichen?

Vielen Danke für die Hilfe
Martin

Content-Key: 5933753029

Url: https://administrator.de/contentid/5933753029

Printed on: May 24, 2024 at 17:05 o'clock

Member: NordicMike
NordicMike Feb 10, 2023 at 13:53:34 (UTC)
Goto Top
Definiere "deutlich"

1%?
2%?
5%?
30%?
50%?

Hast du nur die Auslastung gemessen oder auch die Leistung? z.B. MIPS?
Member: MAG1301
MAG1301 Feb 10, 2023 at 14:11:33 (UTC)
Goto Top
Mit deutlich meine ich, dass Windows 10 bis zu 25 % mehr im Durchschnitt anzeigt.

Wie kann ich die Leistung (z.B. MIPS) messen?
Member: MysticFoxDE
MysticFoxDE Feb 10, 2023 updated at 17:37:34 (UTC)
Goto Top
Moin Martin,

Ich will die CPU- und Prozess-Auslastung einer Anwendung Betriebssystem übergreifend überwachen.

da hast du dir aber eine sehr spannende Aufgabe vorgenommen.

Zum Erzeugen von Stress auf mehreren baugleichen PCs (G5 i5-9500 @3 GHz) verwende ich z.B. HeavyLoad oder WinZip mit unterschiedlichen Einstellungen bei CPU und GPU, aber auch selber geschriebene multithreaded Anwendungen.

Ich beobachte, dass Windows 11 (22H2) deutlich geringere CPU und Prozess Auslastung (teilweise nur die Hälfte) anzeigt, als Windows 10 (20H2). Dieses Verhalten kann man bei mehreren Tools beobachten:
- Leistungsüberwachung, Indikator "\Prozess(_Total)\Prozessorzeit (%)"
- Sysinternals ProcessExplorer
- Win32API, Befehle: GetSystemTimes, NtQuerySystemInformation
- psutil.zip(Python Bibliothek)

Kleiner Tipp, du solltest nicht nur die Prozessorlast im Auge behalten, sondern auf das Ergebnis welches bei dieser Last generiert wird.

Die CPU Gesamt-Auslastung vom TaskManager und des RessourcenMonitors sind Betriebssystem übergreifend gleich, unterscheiden sich aber von den oben genannten Tools. Da ich die Performance automatisiert auslesen und überwachen möchte, bringen mit TaskManager und Co. nicht weiter.

Die CPU-Auslastungsanzeige im Taskmanager und auch die des Ressourcenmonitors kannst du knicken, die verarsch dich eh, weil diese nur 100% der praktisch möglichen 146,6% anzeigt.
Das kommt daher weil Windows die 100% marke der CPU-Last am Basistakt ausrichtet und nicht gegen die aktuell gültige CPU Geschwindigkeit. 😔
Sprich, im ungünstigsten Fall zeigt dir der Taskmanager an, dass dein System zu 100% Ausgelastet ist, obwohl es eigentlich aktuell nur auf 2/3 seiner mögliche Leistung fährt. 🤢

Kannst du mit der Leistungsüberwachung und dem folgenden Performancecounter selbst davon überzeugen.
leistungsÜberwachung-cpu-last-1

leistungsÜberwachung-cpu-last-2

Und so sieht bei mir z.B. das Ganze aus.
leistungsÜberwachung-cpu-last-3

Die Kerne meiner i9-9820X CPU laufen alle Dauerhaft auf 4,4 GHz, sprich auf 133% gegenüber dem Basistakt von 3,3 GHz und deshalb kann ich meinen Rechner lauf Windows auch zu 133% auslasten, aber ohne das Windows mir das wirklich verrät. 🤢🤮

Dass Windows 11 schneller geworden ist, als Windows 10, schließe ich aus. Dafür hab ich unterschiedliche Benchmarks durchgeführt. Auch entsprechende Fachartikeln bestätigen das. Die Energieeinstellungen der Betriebssysteme sind identisch. Die Treiber hab ich auch geprüft.

Nein, ganz sicher ist W11 nicht schneller geworden als W10, ganz im Gegenteil!
Mehr Details dazu gibt es in einem Ausführlichen Artikel wahrscheinlich im Lauf der nächsten Woche.

Welche Möglichkeit gibt es, die Performance Ergebnisse einer Anwendung zwischen Windows Versionen zu vergleichen?

Ich schreib dir später mal auf wie ich meine Messungen mache, vielleicht kannst du das verfahren ja auch auf deine Messungen adaptieren.

Beste Grüsse aus BaWü
Alex
Member: MysticFoxDE
MysticFoxDE Feb 10, 2023 updated at 18:33:30 (UTC)
Goto Top
Moin Martin,

Welche Möglichkeit gibt es, die Performance Ergebnisse einer Anwendung zwischen Windows Versionen zu vergleichen?

so jetzt etwas ausführlicher zu diesem Thema.
Ich habe dem Letzt erst duzende Tests gemacht, in denen ich ermittelt habe, wieviel GHz/s ein Windows bei einem bestimmten Übertragungsmuster benötigt um 1GBit/s zu senden oder zu empfangen.

Die Messung habe ich folgend gemacht.
Ich habe zuerst RSS auf der Netzwerkkarte deaktiviert, damit die Last der Netzwerkkarte nicht auf mehrere Kerne verteilt wird, was die Messung nur unnötig kompliziert macht.
Dann habe ich mit PsPing eine bestimmte Netzwerklast erzeugt und habe mir während des Testlaufs notiert, welche durchschnittliche Auslastung der entsprechende Kern dabei hatte und welcher durchschnittliche Durchsatz bei dieser Auslastung möglich war.

Beispiel:
Durchschnittlicher Durchsatz ausgehend = ~9GBit/s
Durchschnittliche Auslastung Core 0 = ~63%

Die Coregeschwindigkeit war währen der Messung konstant bei ~ 4,4GHz, sprich diese lag bei (4,4GHz:3,3GHz= 1,333 = ~133% des Basistakts und so kann ich mit der folgenden Rechnung ...

4,4GHz / 133 * 63 = 2,08 GHz

Zunächst mal bestimmen, wieviel CPU Leistung diese Workstation der Versand der Daten mit 9GBit/s kostet.

und mit ...

2,08 GHz / 9GBit/s = ~0,231GHz/GBit/s

bekommen ich dann vollends raus, wieviel CPU-Leistung bei einem bestimmten Übertragungsmuster pro ausgehendem 1GBit/s Netzwerkverkehr von dem jeweiligen Betriebssystem real verballert wird.

Und glaub mir, alleine schon bei dem was ich ober geschrieben habe, unterscheiden sich W11 und W10 ganz gewaltig voneinander.

Während der eingehende Datenverkehr auf einer W11 Workstation ca. 0,88GH/z/GBIt/s kostet, sind es bei der Workstation mit W10 nur 0,44GH/z/GBit/s.
Sprich, die Windows 10 Workstation verbraucht beim eigehenden Datenverkehr nur die Hälfte der CPU-Ressourcen, im Vergleich zu einer Workstation mit Windows 11.
Oder anders ausgedrückt, Windows 11 frisst beim eingehenden Netzwerkverkehr, im Vergleich zu Windows 10, doppelt so viel CPU-Ressourcen! 🤢🤮

Ich Hoffe das hilft dir ein wenig besser zu ermitteln, wie effektiv deine Anwendungen auf W11 im Vergleich zu z.B. W10 laufen.

Beste Grüsse aus BaWü
Alex
Member: GrueneSosseMitSpeck
GrueneSosseMitSpeck Feb 13, 2023 updated at 10:32:51 (UTC)
Goto Top
ich würde mir mal das Verhältnis process time zu time anschauen... ich hab das schon öfters mal gehabt, daß die Rechenzeit identisch war (Process time) aber bei bestimmten Szenarien (bei mir hohe Latenzen mit einem Citrix Client) die "time" deutlich höher war, der Ablauf hat 30% mehr Zeit auf der Uhr verbraucht, die Zeitscheiben in denen die REchenleistung abgearbeitet werden lagen weiter auseinander. Die Process Time kann man auch im Sysinternals proces monitor bzw auch im Process Explorer oder im Task manager sehen.

Beim Übergang von Server 2008R2 zu 2012 hat Microsoft angefangen, bei langanhaltender Last die Zeitscheiben nicht mehr auf demselben CPU Kern abzuarbeiten, auf dem der Thread gestartet wurde. Was mit einer realen Leistungseinbuße einherging, daß ein neuer CPU-Kern dann mit kaltem L1 Cache arbeitet. Ein einzelner Last-Thread wanderte dann von Kern 1 auf Kern 2 auf Kern 3 auf Kern 4...

Ich vermute mal daß Microsoft das nun auf Windows 11 nachgezogen hat, da Windows 11 auch als Multisession OS auf Azure angeboten wird in den Azure Virtual Dekstops.

Das diente damals aber dem Ziel, daß man bei mehr als einem User pro Kern den Effekt hatte daß zwei 100% Threads nicht mehr zu je 50% abgearbeitet wurden wenn 2 Threads auf demselben Kern laufen. Desktop OS waren aber früher stets für Singleuser Betrieb ausgelegt... sprich ein Thread bleibt auf demselben Kern wo er mal angefangen hat.