Thread Problematik / mehrere Parallel
Verfasst: 14.08.2011 17:02
Hallo zusammen,
ich bastel derzeit an einer kleinen Überwachung von Prozess-Zeiten herum. sprich die CPU Auslastung des einzelnen Prozesses. Das klappt mittlerweile auch schon ganz gut. Jetzt möchte ich aber mehrere Prozesse zur gleichen Zeit hin überprüfen - allerdings befürchte ich, dass hier dann die Threads auf die Gleichen Ressourcen zurückgreifen und dann crasht es. Evtl. hat hier ja jemand eine Idee was ich falsch mache - oder kann mir sagen was ich ändern muss, damit es funktioniert.
Achtung: Die entsprechenden Benamungen bei den EXE Files müsst ihr natürlich abändern, da es die EXE Dateien so wohl nicht bei euch gibt. (z.B. "rwfw_pcgi.exe" umbenennen in explorer.exe - oder welcher Task ihr halt zum testen heranziehen wollt)
Hier mal mein Code:
ich bastel derzeit an einer kleinen Überwachung von Prozess-Zeiten herum. sprich die CPU Auslastung des einzelnen Prozesses. Das klappt mittlerweile auch schon ganz gut. Jetzt möchte ich aber mehrere Prozesse zur gleichen Zeit hin überprüfen - allerdings befürchte ich, dass hier dann die Threads auf die Gleichen Ressourcen zurückgreifen und dann crasht es. Evtl. hat hier ja jemand eine Idee was ich falsch mache - oder kann mir sagen was ich ändern muss, damit es funktioniert.
Achtung: Die entsprechenden Benamungen bei den EXE Files müsst ihr natürlich abändern, da es die EXE Dateien so wohl nicht bei euch gibt. (z.B. "rwfw_pcgi.exe" umbenennen in explorer.exe - oder welcher Task ihr halt zum testen heranziehen wollt)
Hier mal mein Code:
Code: Alles auswählen
Global Prozesszeit_WEB.d
Global Prozesszeit_PHP.d
Global Prozesszeit_SQL.d
Global Prozesszeit_FTP.d
Procedure Prozess_CPU_WEB(void)
creation.FILETIME
exit.FILETIME
kernel.FILETIME
user.FILETIME
sysinfo.SYSTEM_INFO
GetSystemInfo_(@sysinfo)
numprocs = sysinfo\dwNumberOfProcessors
h = OpenProcess_(#PROCESS_QUERY_INFORMATION, #False, GetPidProcess("rwfw_web.exe"))
GetProcessTimes_(h,@creation,@exit,@kernel,@user)
oldkernel=kernel\dwlowdatetime
olduser=user\dwlowdatetime
Delay(500)
Repeat
GetProcessTimes_(h,@creation,@exit,@kernel,@user)
Prozesszeit_WEB = ((((user\dwlowdatetime-olduser)+(kernel\dwlowdatetime-oldkernel))/500)/100)/numprocs
olduser=user\dwlowdatetime
oldkernel=kernel\dwlowdatetime
Delay (500)
ForEver
EndProcedure
Procedure Prozess_CPU_PHP(void)
creation.FILETIME
exit.FILETIME
kernel.FILETIME
user.FILETIME
sysinfo.SYSTEM_INFO
GetSystemInfo_(@sysinfo)
numprocs = sysinfo\dwNumberOfProcessors
h = OpenProcess_(#PROCESS_QUERY_INFORMATION, #False, GetPidProcess("rwfw_pcgi.exe"))
GetProcessTimes_(h,@creation,@exit,@kernel,@user)
oldkernel=kernel\dwlowdatetime
olduser=user\dwlowdatetime
Delay(500)
Repeat
GetProcessTimes_(h,@creation,@exit,@kernel,@user)
Prozesszeit_PHP = ((((user\dwlowdatetime-olduser)+(kernel\dwlowdatetime-oldkernel))/500)/100)/numprocs
olduser=user\dwlowdatetime
oldkernel=kernel\dwlowdatetime
Delay (500)
ForEver
EndProcedure
Procedure Prozess_CPU_SQL(void)
creation.FILETIME
exit.FILETIME
kernel.FILETIME
user.FILETIME
sysinfo.SYSTEM_INFO
GetSystemInfo_(@sysinfo)
numprocs = sysinfo\dwNumberOfProcessors
h = OpenProcess_(#PROCESS_QUERY_INFORMATION, #False, GetPidProcess("rwfw_sql.exe"))
GetProcessTimes_(h,@creation,@exit,@kernel,@user)
oldkernel=kernel\dwlowdatetime
olduser=user\dwlowdatetime
Delay(500)
Repeat
GetProcessTimes_(h,@creation,@exit,@kernel,@user)
Prozesszeit_SQL = ((((user\dwlowdatetime-olduser)+(kernel\dwlowdatetime-oldkernel))/500)/100)/numprocs
olduser=user\dwlowdatetime
oldkernel=kernel\dwlowdatetime
Delay (500)
ForEver
EndProcedure
Procedure Prozess_CPU_FTP(void)
creation.FILETIME
exit.FILETIME
kernel.FILETIME
user.FILETIME
sysinfo.SYSTEM_INFO
GetSystemInfo_(@sysinfo)
numprocs = sysinfo\dwNumberOfProcessors
h = OpenProcess_(#PROCESS_QUERY_INFORMATION, #False, GetPidProcess("rwfw_storage.exe"))
GetProcessTimes_(h,@creation,@exit,@kernel,@user)
oldkernel=kernel\dwlowdatetime
olduser=user\dwlowdatetime
Delay(500)
Repeat
GetProcessTimes_(h,@creation,@exit,@kernel,@user)
Prozesszeit_FTP = ((((user\dwlowdatetime-olduser)+(kernel\dwlowdatetime-oldkernel))/500)/100)/numprocs
olduser=user\dwlowdatetime
oldkernel=kernel\dwlowdatetime
Delay (500)
ForEver
EndProcedure
Thread_WEB=CreateThread(@Prozess_CPU_WEB(),9000)
Thread_PHP=CreateThread(@Prozess_CPU_PHP(),9001)
Thread_SQL=CreateThread(@Prozess_CPU_SQL(),9002)
Thread_FTP=CreateThread(@Prozess_CPU_FTP(),9003)
Repeat
Debug StrD(Prozesszeit_WEB,2)
Debug StrD(Prozesszeit_PHP,2)
Debug StrD(Prozesszeit_SQL,2)
Debug StrD(Prozesszeit_FTP,2)
Delay(100)
ForEver