Systeminfos über meinen Prozess abfragen?
-
Hi
Wie kann ich Systeminfos über meinen eigenen Prozess abfragen?
Meine eigene PID kriege ich mit dem System Call getpid() aber
wie kriege ich meinen aktuellen Speicherverbrauch raus und evtl.
andere Infos die meinen Prozess betreffen?
-
schau dir mal acct(2) an, dass ist aber nicht auf allen Systemen verfügbar, da es nicht im POSIX Standard enthalten ist. Ein anderer Weg wär über das /proc filesystem, aber da hast du viel mehr kompatibilitäts Schwierigkeiten zu erwarten!
-
Laut man acct unter HP-UX und SUN SOLARIS macht der aber nur was, wenn der Prozess beendet wird!
Ich möchte aber zur Laufzeit diese Daten abfragen können!
-
/dev/kmem wäre mal einen Blick wert. Oder die Ausgabe von ps. Oder was anderes. Aber solche Informationen wie Speicherverbrauch sind prinzipiell nicht aktuell.
Wozu brauchst Du so etwas?
-
Original erstellt von Daniel E.:
Wozu brauchst Du so etwas?Speicherloch finden!
Bei /dev/kmem brauche ich ja irgendwelche Adressen...
-
Um Speicherlöcher zu finden, bieten sich externe Werkzeuge (Debugger, valgrind, LeakTracer usw. usf.) an.
-
Was machen denn solche Tools, wenn man viele externe C++-Programme und Tools eingebunden hat und benutzt? Finden die das dann auch?
-
Wie bindet man externe Programme ein? '#include </bin/ls>' ;)?
Es kommt immer drauf an. Debuggen mit Bibliotheken ist in C++ immer ein bischen ekelig. Du könntest aber z.B. erst mal zeigen (oder einfach davon ausgehen), dass die Bibliotheken und 'externen Programme' fehlerfrei sind.
PS: Schon mal über einen Garbage-Collecto nachgedacht? Um welche Sprache geht's eigentlich?
-
Original erstellt von Daniel E.:
PS: Schon mal über einen Garbage-Collecto nachgedacht? Um welche Sprache geht's eigentlich?Naja ein Garbage Collector sollte der letzte Ausweg sein IMHO, da dies ein wenig bloatigs ist. Lieber erst mal versuchen den Fehler zu suchen!
-
Original erstellt von Daniel E.:
Um welche Sprache geht's eigentlich?Naja in einem C++-Forum...
Es geht um CORBA Server und Clients und da wächst was an!
Ausserdem hätten wir gerne allgemein die Möglichkeit den jeweiligen Speicherverbrauch zur Laufzeit abzufragen! (Wie bei JAVA!)
-
Zuerst mal würde dir das hier empfehlen das ist an sich eine ganz gute library um Speicherlöcher zu finden.
http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/Alle im system verfügbrare informationen bekommst du im veruzeichniss /proc/(pid) allerdings ist das sicher nicht aussreichend die Löcher zu finden.
Joe
-
ccmalloc kenne ich schon und das ist soweit ich das weiß für Linux!
Ich brauche aber was für SUN und HP-UX...
-
Dann hilft dir vielleicht das :
http://www.cbmamiga.demon.co.uk/mpatrol/Was für einen ORB verwendest du denn eigentlich?
Joe
-
Original erstellt von JoeIntel:
Was für einen ORB verwendest du denn eigentlich?VisiBroker
-
Das Programm werden wir mal testen aber wir hätten trotzdem noch gerne was, um zur Laufzeit solche Informationen abfragen zu können...
-
Tja mit VisiBroker kenn ich mich leider nicht aus aber einige OBR's ermöglichen ein Objekttracking. Hab's, aber auch noch nie ausprobiert und weiss nicht wie hilfreich das ist.
Wenn ein bisschen Geld kosten kann dann kannst du dich ja mal mit purify auseinandersetzten dass ist dann wirklich gut.
http://www.rational.com/tryit/purifyplus_unix/index.jspJoe