![]() |
Prozess auf einen CPU-Sockel festlegen
Ich habe hier das Problem das unter Delphi6 bei verwendung einer 3th-Party-Komponente über JNI der Prozess auf Mehrsockel-Systemen abstürzt.
Wird die Anwendung mit XE6 kompiliert läuft es (kann aber jetzt noch nicht umsteigen, ist erst für nächsten Major-Releaes geplant) Über SetProcessAffinityMask(GetCurrentProcess(), 1) könnte ich den Prozess auf einen Kern festlegen. Das könnte aber zu Performanceproblemene führen so das ich ich alle Kerne eines Prozessors freigeben will. Also sowas in der art "SetProcessAffinityMaskForSocket(SocketNr: Integer); Fertig dürfte es das nicht geben (Wäre natürlich schön falls doch). Also ist die Frage wie bekommt man die bindung an einen Sockel am einfachsten hin? Quellcode/Funktionsfragmente werden gerne genommen. |
AW: Prozess auf einen CPU-Sockel festlegen
Du kannst die Anzahl der CPUs (nicht Kerne !) herausfinden. Anschließend kannst du die Zahl der Kerne auf CPU 0 (der ersten) herausfinden und deine AffinityMask entsprechend einstellen, so das dein Prozess zwar Multicore- aber nicht MultiCPU läuft.
However, im wesentlichen ist es kein Unterschied, ob ein Prozess auf einem Dual-CPU-System (2 Prozessoren mit je einem Kern) oder einem Dual-Core-System (eine CPU mit zwei Kernen) läuft. In jedem Falle sind es zwei unterschiedliche CPUs. |
AW: Prozess auf einen CPU-Sockel festlegen
Folgender Code müsste das gewünschte Leisten:
Delphi-Quellcode:
Leider kracht es immer noch.
procedure SetProcessAffinityMaskToOneSocket;
var NewMask: Int64; begin GetNumaNodeProcessorMask(0, @NewMask); SetProcessAffinityMask(GetCurrentProcess(), NewMask); end; Dann bleibt doch das während der Problematischen Funktionen ein
Delphi-Quellcode:
SetProcessAffinityMask(GetCurrentProcess(), 1);
bis wir dann auf XE6 sind |
AW: Prozess auf einen CPU-Sockel festlegen
Zitat:
|
AW: Prozess auf einen CPU-Sockel festlegen
[Halb-OT]
Zitat:
Auch wieder an einen Sockel (Damals Sockel = Kern) gebunden und schon waren alle Probleme verschwunden. Hier kann ich dir zustimmen: Einen MFC/ATL-Programm sollte man nicht trauen :-) [/Halb-OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz