AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Threads Überwachen / CallStack

Ein Thema von Gruber_Hans_12345 · begonnen am 19. Sep 2007 · letzter Beitrag vom 19. Sep 2007
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#1

Threads Überwachen / CallStack

  Alt 19. Sep 2007, 09:59
Hallo

Ich habe eine Anwendung, die auf einem Server ganz normal im Hintergrund läuft (tut im prinzip nix anderes als alle 15 minuten große berechnungen durchzuführen - oder wenn per TCP/IP Anfragen daherkommen, auch neu zu berechnen)
jetzt habe ich das phänomen, das ab und zu die Anwenung 100% CPU Leistung benötigt ... was natürlich nicht so nett ist (es wird auch nichts mehr berechnet)

da hab ich folgende idee
ich schreib mir einen thread, der in intervallen alle anderen threads überwacht, und wenn ein thread der anwendung zu viel cpu zeit oder so konsumiert hat, dann soll der den callstack dieses threads ausgeben ... und je nach einstellung nach gewisser zeit vielleicht, die anwendung neu starten.

hat da jemand vielleicht gute ideen dazu?

vorallem wie kann man erkennen, das ein thread nicht mehr gut läuft? ich möchte vermeiden, einen art watchdog einzubauen, wo der thread immer wieder mal bescheid sagt, das er noch ok ist - die CPU Zeit was so ein thread hat kann man ja niergends auslesen oder? (geht ja nur für prozese?)

hat da wer ne idee dazu?

[edit]dachte mir hab hie irgendwo mal gelesen, man bekommt die CPU Zeit pro Thread nicht raus ... aber das scheint mit GetThreadTimes ja ohne probleme zu gehen ... [/edit]
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Threads Überwachen / CallStack

  Alt 19. Sep 2007, 11:09
Also hab im moment das problemchen, das ich nicht an den callstack eines thread rankomme

hat da wer infos dazu?

ich habe einen überwachungsthread, der geht alle thread des prozesses durch, und soll mir für diese den callstack ausgeben (JCL Debug Infos sind drinnen)
aber die "normale" funktionen für den callstack greifen ja auf die CPU Register EBP und so zu, die bekomm ich dann natürlich immer nur für den aktuellen Thread (den Überwachungsthread)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#3

Re: Threads Überwachen / CallStack

  Alt 19. Sep 2007, 11:19
Warum lässt du die Threads aktiv obwohl du sie momentan nicht benötigst? Wenn du damit irgendwelche Dinge pollst ohne Unterbrachung bekommst du natürlich eine hohe CPU Auslastung.

Ansonsten solltest du nicht benötighte Threads suspenden oder gleich löschen.

mfg
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Threads Überwachen / CallStack

  Alt 19. Sep 2007, 12:14
Zitat von HERMES:
Warum lässt du die Threads aktiv obwohl du sie momentan nicht benötigst? Wenn du damit irgendwelche Dinge pollst ohne Unterbrachung bekommst du natürlich eine hohe CPU Auslastung.

Ansonsten solltest du nicht benötighte Threads suspenden oder gleich löschen.

mfg
darum geht es nicht

die haben im normal fall keine hohe auslastung, nur wenn die was zu tun haben

und threads brauche ich, da es sich hier um blockierende sachen handelt (blockierende TCP/IP Verbindungen und blockierende COM Verbindungen) und solche sachen kann man nur mit threads lösen - die kann man weder löschen noch in suspend schicken, da die ja auf daten warten sollen

und für den fall, das so ein thread dann aus gründe welche auch immer beim abarbeiten dann in ne endlosschleife oder in eine beinahe endlosschleife kommen, möchte ich gernen den callstack dieses einen threads auslesen - aber wie gesagt da ja der stack im EBP register abgelegt ist, tu ich mir schwer, bräuchte irgendwie die infos, wie ich den Stack eines nicht aktuellen Threads auslesen kann
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#5

Re: Threads Überwachen / CallStack

  Alt 19. Sep 2007, 15:00
Ich dachte dabei an Arbeitsthreads, klar bei Threads zur kommunikation geht das so nicht, allerdings sollten diese ja eigentlich keine hohe Last erzeugen, wenn diese sich in einem geblockten zustand, durch die kommunikation, sind. Wenn du allerdings deine Kommunikationspuffer pollst ohne pause kann schon eine hohe auslastung entstehen.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Threads Überwachen / CallStack

  Alt 19. Sep 2007, 15:10
Zitat von HERMES:
Ich dachte dabei an Arbeitsthreads, klar bei Threads zur kommunikation geht das so nicht, allerdings sollten diese ja eigentlich keine hohe Last erzeugen, wenn diese sich in einem geblockten zustand, durch die kommunikation, sind. Wenn du allerdings deine Kommunikationspuffer pollst ohne pause kann schon eine hohe auslastung entstehen.
Wir reden hier anscheinend ziemlich aneinander vorbei ...

das ist mir schon alles klar

ich will ja, wenn ich solch einen thread entdecke, diesen einen thread ausfindig machen

das problem, ist normalerweise funkt alles ohne probleme, nur durch irgendwelche zustände kann es anscheinend passieren, das ein thread irgendwo eine endlosschleife macht.

und genau in so einem fall will ich den CallStack des Threads auslesen - macht der thread ne exxception

darum geht es mir : den CallStack eine Threads auslesen, ich brauche irgendwie die informationen, wie ich den aktuellen Stackpointer, der normalerweise im EBP Register ist, auslesen kann, wenn ich mich gerade in einem anderen Thread befinde

es geht hier NICHT darum wie die Thread organisiert sind, ob die pollen oder nicht oder sonst was - auch nicht wie der kommunikationspuffer organisiert ist, sondern darum einen Thread, der nicht mehr richtig reagiert rauszufinden in welche(n) funktionen der gerade ist, damit mir das fehlersuchen leichter fällt
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45 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