CPU Limit erkennen?

Youtuber1987

Banned
Registriert
Juli 2019
Beiträge
370
Ich lasse gerade ein paar PDF Dateien von Adobe Acrobat durchs OCR laufen.

Ich vermute, dass ich dabei im CPU Limit hänge, was die Geschwindigkeit betrifft.

Meine Fragen dazu.

1. Wie kann ich erkennen, dass es tatsächlich das CPU Limit ist, weil 1 Kern voll ausgelastet wird?
CPU ist ein Intel i3 8100 mit 4x 3,60 Ghz

Wieso zeigt mir der Taskmanager nicht den einen Kern mit 100% an, der voll belastet wird?

2. Es ist die neuste Version von Adobe Acrobat.
Warum ist im Jahre 2020 so ein Programm noch nicht darauf programmiert, alle 4 Kerne voll zu belasten?

Taskmanager.jpg
 
Hallo Youtuber1987,

ich bin mir nicht sicher was OCR macht oder ist, jedenfalls bei solchen Arbeiten von "CPU Limit" zu sprechen ist nicht ganz richtig, eine neuere/Stärkere CPU wird den Vorgang beschleunigen aber nicht verbessern oder anders ausführen.

Zu 1. Woher weißt du das 1 Kern ausgelastet wird? Schau doch mal mit dem Programm HWMonitor oder nutze den Ressourcen Manager einfach unten im Taskmanager drauf klicken zur Überwachung.

Wenn der Taskmanager anzeigt das alle 4 Kerne belastet werden werden auch alle 4 Kerne belastet.

2. Weil es einfacher zu Programmieren ist.
 
Windows wechselt bei ungleichmäßiger Belastung die Kerne, da es immer versucht, die Belastung auf alle Kerne zu verteilen. Bei nur einem Thread wechselt der halt ständig. Das kann man nicht umgehen, ausser dass man den Task an einen Kern bindet -> Taskmanager
Wenn ein Problem, wie zum Beispiel OCR, nicht parallelisieren lässt, muss das einfach in einem Thread abgearbeitet werden.
 
Youtuber1987 schrieb:
Wieso zeigt mir der Taskmanager nicht den einen Kern mit 100% an, der voll belastet wird?
Stichwort Scheduling

Das Verhalten kann mit HWiNFO überprüft werden.

Die CPU hat ihr Limit erreicht, wenn ein einzelner Kern die maximale Taktfrequenz erreicht oder die maximale Taktfrequenz auf allen Kernen erreicht wird.

P.S.
Einfach mal zum Reiter 'Prozesse' wechseln
1585043383362.png
 
Zuletzt bearbeitet: (Ergänzung)
zakuma schrieb:
Wenn der Taskmanager anzeigt das alle 4 Kerne belastet werden werden auch alle 4 Kerne belastet.

Das heißt aber nicht, dass das Programm mehrere Threads nutzt.
 
Guck in die Prozesse.
Wenn dein Adobe Prozess beispielsweise immer bei 25% +- 3% CPU-Last bleibt, und du hast einen 4-Thread Prozessor, dann kannst du davon ausgehen, dass die Software nur da Äquivalent von einem Kern nutzen kann.
 
Wenn nur ein Kern genutzt wird, ist das dann auch ein Limit. Dann würde ein CPU mit höherem Single Core Boost etwas bringen, die Frage ist nur: Wieviel? Ein paar Sekunden pro Durchlauf?
 
Hauro schrieb:
Das Verhalten kann mit HWiNFO überprüft werden.

Wo sehe ich denn da, wie die Auslastung eines einzelnen Kernes ist?

Tool hab ich die Portable Version geladen.

DarkSoul schrieb:
Wenn nur ein Kern genutzt wird, ist das dann auch ein Limit. Dann würde ein CPU mit höherem Single Core Boost etwas bringen, die Frage ist nur: Wieviel? Ein paar Sekunden pro Durchlauf?

Darum gehts nicht.
Es ist rein eine Frage zum Verständnis, wie man selber das CPU Limit erkennt, da es ja im Taskmanager nicht offensichtlich dargestellt wird.
 
@Youtuber1987 Du kannst ganz einfach herausfinden, wie hoch die Last auf den Kernen ist. Windows zeigt immer max 100% Last im Taskmanager an. In deinem Screenshot werden ca. 38% Auslastung angezeigt, also werden etwa 1,5 Kerne ausgelastet. Allerdings zeigt dir Windows nicht, wie viele Threads laufen und wo der Bottleneck ist. Es kann auch sein, dass die CPU nicht 100% ausgelastet ist, das Programm dennoch nicht schneller läuft, weil die einzelnen Programmteile sich gegenseitig ausbremsen. Dann ist weder die CPU, noch einen einzelnen Kern maximal ausgelastet, aber deine CPU kann trotzdem nicht schneller.

Edit: Genaueres kannst du hiermit ergründen: https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
 
Youtuber1987 schrieb:
1. Wie kann ich erkennen, dass es tatsächlich das CPU Limit ist, weil 1 Kern voll ausgelastet wird?
Das ist bei Windows schwer, umso schwerer je mehr Kerne / Threads die CPU hat.
Youtuber1987 schrieb:
Wieso zeigt mir der Taskmanager nicht den einen Kern mit 100% an, der voll belastet wird?
Weil der Task Scheduler von Windows die SW Threads ständig zwischen den Kernen hin und herschiebt und daher hast Du mit den 4 Kernen dann so 25% Last (plus etwas Grundlast von den anderen Prozessen) auf jedem Kern, auch wenn die CPU am Limit der Singlethreasperformance hängt. Am besten erkennt es bei Windows daran, dass der eine Prozess eben 25% CPU Auslastung erzeugt. 100% zeigt Windows eben nur an, wenn alle Kerne (egal ob physikalisch oder logisch) voll ausgelastet werden, ein SW Thread kann also die CPU maximale mit 100%/Anzahl der Kerne auslasten. Bei Linux ist dies einfacher, dessen Task Scheduler verschiebt die Software nur sehr langsam von einem Kern zum nächsten und bei Linux Tools wie top sind es 100% pro Kern, bei voller Last auf allen Kernen wäre es bei Dir also 400% Last.
 
Hauro schrieb:
Core <Nummer 0-3> T0 Usage
Da der Task Scheduler die Thread so schnell zwischen den Kernen verschiebt, wird dies nicht funktionieren und man wie im Task Manager nur so 25% Auslastung auf jedem Kern sehen. Damit lässt sich nicht erkennen wann die Singlethreadperformance der Flaschenhals ist.
 
Hauro schrieb:
Eine Möglichkeit ist die Prozessoraffinität festzulegen.
Klar, aber wenn man dem Programm nur einen Kern zuweist, dann wird ja sowieso die Singlethreadperformance zu Flaschenhals gemacht und man allenfalls anhand der Performance des Programms noch erkennen, ob dies auch sonst der Fall gewesen wäre.
 
Holt schrieb:
Weil der Task Scheduler von Windows die SW Threads ständig zwischen den Kernen hin und herschiebt
Aber das gilt doch nicht für einen laufenden Thread... das was man in CB beobachten kann, ist zwar eine Verschiebung der Threads von einem Core zum nächsten, aber erst wenn CB eine "Kachel" fertig gerendert hat.

Falls das OCR-Programm die Arbeit in kurze Threads aufteilt, aber eben nicht mehr als einen Thread gleichzeitig, könnte man eine Verschiebung natürlich sehen. Falls die einzelnen Threads aber länger dauern, müsste man länger eine volle Core-Auslastung beobachten können.
 
DarkSoul schrieb:
Aber das gilt doch nicht für einen laufenden Thread...
Doch natürlich. Bei AMD hat man da für Zen einige Änderungen vorgenommen, da es bei diesen deutlich an Performance kostet wenn die Threads zwischen Kernen auf unterschiedlichen CCX verschoben werden, aber er hat eine Intel CPU und da sieht man eben so um die 25% Auslastung auf jedem Kern, weil diese innerhalb des Intervalls in dem der Taskmanager die Anzeigen aktualisiert über alle 4 Kerne seiner CPU verschoben wurden.

Bei Zen2 ist es wegen der Boostfunktion die den maximalen Boosttakt ja (wenn dann) sowieso nur auf dem besten Kern schaffen, nochmal anders, da bleibt der Thread auf dem besten Kern fixiert, man muss also hier zwischen Intel (bzw. AMD vor Zen) und aktuellen AMD Zen und Zen2 und auch den Intel CPUs mit Turbo Boost 3.0 (also den HEDT und Workstation Xeons) unterscheiden!
 
Zurück
Oben