Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Welcher Core macht was? (https://www.delphipraxis.net/155842-welcher-core-macht.html)

divBy0 10. Nov 2010 07:46

Welcher Core macht was?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich stelle mir gerade die Frage, ob man rausbekommen kann, welcher Core gerade was macht. Für jeden Core gibt es im Taskmanager ja ein Diagramm (s. Anhang) mit der Auslastung. Kann man evtl. auch ermitteln welche Prozesse jeder einzelne Core bearbeitet?

Bei meinem alten PC gab es nur 2 Cores, da hatte man den Überblick, jetzt allerdings existieren 12 Cores...

mirage228 10. Nov 2010 08:12

AW: Welcher Core macht was?
 
So eine Ansicht gibt es im Task-Manager leider nicht. Ich glaube, wenn Du nicht explizit festlegst, dass ein Prozess nur auf bestimmten CPUs laufen darf (SetAffinityMask-Funktionen), dann kann der Prozess quasi reih um mal von dem einem, dann mal von dem anderen Core bearbeitet werden zu einem bestimmten Zeitpunkt...

divBy0 10. Nov 2010 08:34

AW: Welcher Core macht was?
 
Ja, dass es da keine feste Zuordnung während der Prozesslaufzeit gibt habe ich schon befürchtet.

himitsu 10. Nov 2010 08:43

AW: Welcher Core macht was?
 
Also, es heißt genau MSDN-Library durchsuchenSetProcessAffinityMask
und darüber kommst du dann erstmal an eine gute Stelle im MSDN, von wo aus man sich weiter durchgraben könnte.

z.B. findet man da MSDN-Library durchsuchenGetCurrentProcessorNumber, womit der eigene Prozess erfährt, wo er grade in diesem Moment läuft.
Für externe Programme gibt es sowas anscheinend nicht.
(der gewünschte Prozess muß ja auch nichtmal grade verarbeitet werden, so daß er keinem Kern zugeordnet ist)

Klar könnte man jetzt in alle Programme, bzw. eigentlich sogar in alle Threads, einen Code injizieren, welcher das Abfragt, aber wozu der Aufwand und wozu den PC so ausbremsen.
Außerdem könnte diese Zuweisung auch dutzende oder hunderte Male in der Sekunde wechseln ... da kann doch keiner mehr zugucken. :shock:

PS: ein Programm ist keinem Prozessor zugeordnet, sondern alle seine Threads.
Und diese müssen nichtmal auf dem selben Prozessor/Kern zugeordnet sein.
Heißt also, du hättest so eine unüberschaubare Liste von tausenden Threads.

Du kannst aber den Programmen/Threads sagen wo sie laufen sollen.
Da gibt's auch schon fertige Programme.
Wenn du festlegst wo was läuft, dann weißt du wo was läuft. :stupid:
z.B. einem Programm und seinen Threads nur einen Prozessor zuweisen und allen Anderen diesen verweigern.

divBy0 10. Nov 2010 08:48

AW: Welcher Core macht was?
 
Danke himitsu,

das hilft mir schon mal weiter. Den Aufwand will eigentlich nur mal aus Interesse betreiben um zu sehen, wie meine Anwendung mit mehreren Threads aufgeteilt wird, das ist schon alles. :-D

himitsu 10. Nov 2010 09:08

AW: Welcher Core macht was?
 
Bitte.

OK, dann reicht es ja, wenn du abundzu nur in deiner Anwendung (in den Interessanten Threads) abfragst, wo diese grade laufen.
Sowas sollte dann nicht all zu aufwändig sein ... du mußt ja nur je eine GetCurrentProcessorNumber-Abfrage in deine Threads einbauen, diese Werte in irgeneiner Thread-Liste abspeichern und dann dieses Anzeigen oder es jeweils direkt anzeigen. :gruebel:

jfheins 10. Nov 2010 12:13

AW: Welcher Core macht was?
 
Zitat:

Zitat von divBy0 (Beitrag 1060703)
Danke himitsu,

das hilft mir schon mal weiter. Den Aufwand will eigentlich nur mal aus Interesse betreiben um zu sehen, wie meine Anwendung mit mehreren Threads aufgeteilt wird, das ist schon alles. :-D

So ganz grob geht das: Du kannst ja im Taskmanager auf Prozesse gehen und dort für dein Programm die Zugehörigkeit ändern. (Und es so auf 1..12 Prozessoren einschränken)
Wenn zu genug Zeit hast, kannst du ja mal alle anderen Prozesse auf einen Kern binden und dann deinem Programm alle anderen zuweisen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz