Problem Prozessorzugehörigkeit
Moderator: Moderatoren
- satmax
- 1000 working lines a day
- Beiträge: 831
- Registriert: Do, 02. Dez 2010 19:34
- Wohnort: Biberbach in Österreich
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Problem Prozessorzugehörigkeit
Das XBase++ Programme nur einen Prozessor können habe ich schon mitbekommen. Jetzt habe ich aber das Problem, dass alle Programme die ich mit runshell (tdRunShell) starte auch nur einen, den ersten Prozessor verwenden. Das kann ich aber auf keinen Fall brauchen. Gibt es dafür eventuell eine Lösung?
Zuletzt geändert von satmax am Do, 09. Jul 2015 10:56, insgesamt 1-mal geändert.
Gruß
Markus
Markus
- satmax
- 1000 working lines a day
- Beiträge: 831
- Registriert: Do, 02. Dez 2010 19:34
- Wohnort: Biberbach in Österreich
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Problem Prozessorzugehörigkeit
Mit XBase++ habe ich es nicht geschafft bei fremden laufenden Prozessen die Prozessor Affinity umzustellen. Selbst nicht dann wenn ich ein CMD File zum starten verwendet habe.
Manuell aus dem Explorer gestartet:
start /AFFINITY F c:\dev\devsrc\prog.exe /NORUNCHECK
funktioniert und es werden 4 Prozessoren verwendet. Starte ich das gleiche via Shell aus dem XBase++ Programm wird wieder nur Prozessor 0 verwendet.
Wir haben das jetzt so lösen können, dass mein Kollege in seinen VC++ Programmen selbst beim Start die Prozessor Affinity umstellt.
Aktuell ist das für mich eines der größten Probleme von XBase++. Ein Programm das 2015 nur einen Prozessor verwenden kann.
Das einzige das geht ist, das ich das eigene Programm auf einen anderen Prozessor legen kann.
Manuell aus dem Explorer gestartet:
start /AFFINITY F c:\dev\devsrc\prog.exe /NORUNCHECK
funktioniert und es werden 4 Prozessoren verwendet. Starte ich das gleiche via Shell aus dem XBase++ Programm wird wieder nur Prozessor 0 verwendet.
Wir haben das jetzt so lösen können, dass mein Kollege in seinen VC++ Programmen selbst beim Start die Prozessor Affinity umstellt.
Aktuell ist das für mich eines der größten Probleme von XBase++. Ein Programm das 2015 nur einen Prozessor verwenden kann.
Das einzige das geht ist, das ich das eigene Programm auf einen anderen Prozessor legen kann.
Gruß
Markus
Markus
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Problem Prozessorzugehörigkeit
Markus,
Steffen (der von Alaska) hat mal erzählt, wie man das Xbase++-Programm auf einen anderen Prozessor legen kann. Das Programm läuft dann immer noch nicht verteilt auf mehreren Prozessoren, aber eben auf dem, den Du haben willst.
Jan
Steffen (der von Alaska) hat mal erzählt, wie man das Xbase++-Programm auf einen anderen Prozessor legen kann. Das Programm läuft dann immer noch nicht verteilt auf mehreren Prozessoren, aber eben auf dem, den Du haben willst.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Problem Prozessorzugehörigkeit
im letzten Jahrtausend funktioniert Xbase++ v1.3x mit allen CPUs ...satmax hat geschrieben:Aktuell ist das für mich eines der größten Probleme von XBase++. Ein Programm das 2015 nur einen Prozessor verwenden kann.
wenn ich mich nicht irre wurde es nach Einführung von Threads (v1.5x ?), welche auf der selben CPU laufen, wegen Problem eingeschränkt.
gruss by OHR
Jimmy
Jimmy
- satmax
- 1000 working lines a day
- Beiträge: 831
- Registriert: Do, 02. Dez 2010 19:34
- Wohnort: Biberbach in Österreich
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Problem Prozessorzugehörigkeit
Ja, das ist mir klar hilf aber nichts. Die Programme die ich Überwache sind zum Beispiel GPRS Server Tasks die hunderte Verbindungen (TCPIP/Sockets) gleichzeitig offen halten und mit mobilen Einheiten kommunizieren (in eigenen Threads). Ich habe nun ein kleines Tool in XBase++ geschrieben mit dem ich diese Programme überwache und teilweise dann auch neu starte. So ein GPRS-Task braucht dann aber 4, 8 ,16 oder mehr CPU's.Jan hat geschrieben:Markus,
Steffen (der von Alaska) hat mal erzählt, wie man das Xbase++-Programm auf einen anderen Prozessor legen kann. Das Programm läuft dann immer noch nicht verteilt auf mehreren Prozessoren, aber eben auf dem, den Du haben willst.
Jan
Wie geschrieben, im Moment habe ich eine Lösung, toll ist die aber nicht.
Stell dir vor hier würde nur 1 CPU verwendet:
- Dateianhänge
-
- cpu09-07-_2015_12-06-00.png (171.28 KiB) 4736 mal betrachtet
Gruß
Markus
Markus
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Problem Prozessorzugehörigkeit
versuche mal, statt CMD, die EXE mit ShellOpenFile() zu startensatmax hat geschrieben:Selbst nicht dann wenn ich ein CMD File zum starten verwendet habe.
Manuell aus dem Explorer gestartet:
start /AFFINITY F c:\dev\devsrc\prog.exe /NORUNCHECK
funktioniert und es werden 4 Prozessoren verwendet. Starte ich das gleiche via Shell aus dem XBase++ Programm wird wieder nur Prozessor 0 verwendet.
Code: Alles auswählen
FUNCTION SHELLOPENFILE(cPath, cFILE )
LOCAL lSuccess
LOCAL Retvar := .F.
/*----------------------------------------------------------
Created from ContactUs.PRG
Posted to Alaska Generic NG 3/15/01
By Anand K Gupta Sun, 24 Dec 2000
----------------------------------------------------------- */
* #define SW_HIDE 0
* #define SW_NORMAL 1
* #define SW_SHOWMINIMIZED 2
* #define SW_SHOWMAXIMIZED 3
* #define SW_MAXIMIZE 3
* #define SW_SHOWNOACTIVATE 4
* #define SW_SHOW 5
* #define SW_MINIMIZE 6
* #define SW_SHOWMINNOACTIVE 7
* #define SW_SHOWNA 8
* #define SW_RESTORE 9
* #define SW_SHOWDEFAULT 10
* #define SE_ERR_NOASSOC 31
// Xbase++ Syntax
* lSuccess := DllCall( "SHELL32.DLL" , DLL_STDCALL, ;
* "ShellExecuteA", AppDesktop():GetHWND(), "open", cPath+cFile,;
* NIL, CurDir(), SW_NORMAL ) // SW_MAXIMIZE
// ot4xb Syntax
lSuccess := @SHELL32:ShellExecuteA( AppDesktop():GetHWND(),;
"open",;
cPath+cFile,;
0,;
CurDir(),;
SW_NORMAL ) // SW_MAXIMIZE
DO CASE
CASE lSuccess > 32 // Aufruf erfolgreich
Retvar := .T.
Case lSuccess = SE_ERR_NOASSOC // Keine verknpfte Anwendung
// Falls ShowOpenWithDialog = True, wird der Dialog
// "™ffnen mit" fr diese Datei angezeigt:
// Shell "RunDLL32 shell32.dll,OpenAs_RunDLL " & Filename
// Xbase++ Syntax
* DllCall( "SHELL32.DLL" , DLL_STDCALL, ;
* "OpenAs_RunDLL", AppDesktop():GetHWND(), NIL, cPath+cFile,;
* NIL, CurDir(), SW_NORMAL ) // SW_MAXIMIZE
// ot4xb Syntax
@SHELL32:OpenAs_RunDLL( AppDesktop():GetHWND(),;
0,;
cPath+cFile,;
0,;
CurDir(),;
SW_NORMAL ) // SW_MAXIMIZE
// Die Auswahlm”glichkeit wird als Erfolg gewertet:
Retvar := .F.
OTHERWISE
// ShellExecute war erfolglos.
// Boolean-Standardwert False zurckgeben
Retvar := .F.
ENDCASE
RETURN Retvar
gruss by OHR
Jimmy
Jimmy
- satmax
- 1000 working lines a day
- Beiträge: 831
- Registriert: Do, 02. Dez 2010 19:34
- Wohnort: Biberbach in Österreich
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Problem Prozessorzugehörigkeit
Selbes Problem, nur CPU #0
Mappoint verwende ich nicht und kann es daher nicht verifizieren.
Mappoint verwende ich nicht und kann es daher nicht verifizieren.
Gruß
Markus
Markus
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Problem Prozessorzugehörigkeit
hm ... wenn das geht dann versuche doch mal diese Syntaxsatmax hat geschrieben:Manuell aus dem Explorer gestartet:
start /AFFINITY F c:\dev\devsrc\prog.exe /NORUNCHECK
Code: Alles auswählen
RunShell( [/C start "Convert File" /AFFINITY F "c:\dev\devsrc\prog.exe" ],'cmd.exe',.f.,.t.)
p.s. auf welcher CPU läuft dein Programm was Runshell() aufruft ?
gruss by OHR
Jimmy
Jimmy
- satmax
- 1000 working lines a day
- Beiträge: 831
- Registriert: Do, 02. Dez 2010 19:34
- Wohnort: Biberbach in Österreich
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Problem Prozessorzugehörigkeit
Hallo Jimmy, geht auch nicht wird nur Processor #0 verwendet:
Mein Programm läuft auf Processor #0RunShell( [/C start "Convert File" /AFFINITY F "c:\dev\devsrc\prog.exe" ],'cmd.exe',.f.,.t.)
Gruß
Markus
Markus