Was könnte dazu führen, dass die Maximalfrequenz der CPU für einige Sekunden auf 0% sinkt?

1712
Reinier Torenbeek

Ich teste eine .NET-Anwendung mit erweiterten GUI-Funktionen. Eine bestimmte Aktion dauert bis zu 5 Sekunden. Beim Betrachten des Standard-Windows-Ressourcenmonitors fiel mir auf, dass diese Verzögerung mit einem starken Einbruch bis zu 0% im "Maximum Frequency" -Diagramm des Monitors zusammenfällt - siehe die blaue Linie im Bild unten.

CPU usage graph in Resource Monitor

Basierend auf der Antwort auf Was bedeutet die "Maximale Häufigkeit" im Windows-Ressourcenmonitor? , und einige andere Informationen im Web, meine Schlussfolgerung ist, dass dieser Einbruch die Verzögerung verursacht, da die CPU im Wesentlichen für etwa drei Sekunden nicht verfügbar ist. Ist das die richtige Schlussfolgerung? Wenn ja, was könnte diesen Einbruch bewirken?

Einige Informationen zu meinem Setup: Dies ist auf einem Computer mit Windows Embedded 7 Standard, der auf einem Intel Atom E680T- Prozessor ausgeführt wird. Alle Energiesparoptionen sind auf maximale Leistung eingestellt. Der gleiche Test zeigt diesen Effekt nicht auf anderen Maschinen, die ich ausprobiert habe. Diese haben jedoch leistungsfähigere CPUs.

2
Sie haben fast sicher die Ursache und Wirkung nach hinten. Die CPU schlummert, weil sie keine Arbeit erledigen kann. David Schwartz vor 11 Jahren 2
@DavidSchwartz Es stellt sich heraus, dass meine App mit Echtzeit-Priorität und der Ressourcenmonitor mit Normal-Priorität ausgeführt wurde. Daher ist der Ressourcenmonitor für eine Weile geplant und kann nicht die korrekten Werte für die maximale Häufigkeit anzeigen. Ist das ähnlich zu dem, was Sie in Ihrem Kommentar beschreiben? Reinier Torenbeek vor 11 Jahren 0
Nein, das dachte ich gar nicht. Aber das ist eigentlich ziemlich witzig. David Schwartz vor 11 Jahren 0

1 Antwort auf die Frage

2
Reinier Torenbeek

The answer to my question is: the Maximum Frequency does not dip, even though the Resource Monitor indicates it does.

My process was running at Real-Time Priority, while the Resource Monitor was running at Normal Priority. As soon as my process got really busy, the Resource Monitor was not granted the CPU cycles required to measure the values it was monitoring. As a "consequence", it erroneously displayed zero values.

One thing that surprises me in particular is the fact that the GUI of the Resource Monitor was happily updating, the graph shifted leftwards without any noticeable irregularities. The cause would have been much easier to identify if the GUI would have stalled as well.

Sorry for answering my own question -- not sure whether this is an appropriate thing to do. I do not want other people to spend time on this in vain either though.