1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Software und Anwendungen
  3. Betriebssysteme

Programme um CPU Auslastung/Laufzeit, RAM Auslastung etc. auszulesen

    • Linux
  • Almlieschen
  • 24. August 2010 um 23:38
  • Unerledigt
  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 24. August 2010 um 23:38
    • #1

    Hallo!

    Ich hätt grad gerne eine Möglichkeit, wie ich während eines Testlaufs eines Programms (eines, das in einer Konsole aufgerufen wird) mitloggen kann, wieviele Kerne benutzt werden, ev. wie hoch deren Auslastung dabei ist, wieviel RAM oder auch Festplattenplatz benutzt wird (könnte ja sein, dass temporäre Dateien geschrieben werden, die am Schluss gar nicht mehr da sind) usw usf.
    Ich hab grad nicht viel Plan, wie ich das überhaupt mitloggen lassen könnte, denn so ein paar Befehle (wie 'top', 'mpstat'etc.) hab ich schon gefunden, aber ich wüsste jetzt gerade nicht, wie ich die zu einem netten Logfile zusammenschustern könnte...

    Prinzipiell soll das ganze über die Konsole auf einem Linuxrechner laufen können, also sind shell-Scripts etc., aber viell. auch Javacode (ich bin noch nicht sicher, ob ich das auszuführende Programm viell. über ein Javaprogramm aufrufe) sinnvoll.

    Ich hoffe, hier haben ein paar Leute mehr Ideen zu soetwas als ich zu dieser Stunde :) Viell. hat ja jemand schonmal für ein Praktikum sowas gemacht...

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 25. August 2010 um 07:53
    • #2

    "Wieviele Kerne" und "Prozessorauslastung" sind nicht besonders wohldefinierte Fragen, glaub ich. Da spielt sehr stark mit, was das Betriebssystem so tut, und was für andere Prozesse laufen. Wenn ich neben deinem Prozess einen anderen teuren Prozess laufen habe, braucht deiner insgesamt (ungefähr) gleich viel CPU-Sekunden wie wenn er allein ist, aber vielleicht lastet er den Prozessor nur halb aus, weil der eben zur anderen Hälfte mit dem anderen Prozess beschäftigt ist.

    Bei Valgrind ist ein tool dabei (Cachegrind), das dir Anzahl der ausgeführten Befehle, Speicherzugriffe, Cache hits und misses etc. zählt. Auch das simple "time" kann den (maximalen) Speicherverbrauch und noch ein paar andere nette Statistiken ermitteln. Was Festplattenplatz betrifft, wüsste ich gerade nichts direktes; aber ist nicht die Anzahl der Zugriffe interessanter als der maximal verwendete Platz? Soll heißen, ein Programm, das nur 10 kB auf der Platte belegt, diese aber eine Millionmal liest und neu beschreibt, wird dafür länger brauchen als ein Programm, das einmal 100 kB rausdumpt.

    Geht es dir um die Optimierung eines bestimmten Programms, oder versuchst du Statistiken über mehrere verschiedene Programme zu sammeln?

    *plantsch*

  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 25. August 2010 um 10:50
    • #3
    Zitat von Plantschkuh!

    "Wieviele Kerne" und "Prozessorauslastung" sind nicht besonders wohldefinierte Fragen, glaub ich. Da spielt sehr stark mit, was das Betriebssystem so tut, und was für andere Prozesse laufen. Wenn ich neben deinem Prozess einen anderen teuren Prozess laufen habe, braucht deiner insgesamt (ungefähr) gleich viel CPU-Sekunden wie wenn er allein ist, aber vielleicht lastet er den Prozessor nur halb aus, weil der eben zur anderen Hälfte mit dem anderen Prozess beschäftigt ist.


    Ja, das mit den anderen Prozessen hab ich auch nicht so berücksichtigt gehabt...ich hab die Fragen mehr oder minder von meiner Angabe übernommen. Dass ja andere Prozesse auch laufen, ist mir klar, ich hoffe aber, es gibt irgendwas ur mächtiges, das auslesen kann, wieviel Prozessorzeit genau mein Prozess verbraucht (viell. mit ein bisschen magic :winking_face: - mit Java brauch ich gar nicht erst was suchen, oder? Weil die VM ja gar nicht auf diese Systemwerte zugreifen können wird...)

    Zitat von Plantschkuh!


    Bei Valgrind ist ein tool dabei (Cachegrind), das dir Anzahl der ausgeführten Befehle, Speicherzugriffe, Cache hits und misses etc. zählt. Auch das simple "time" kann den (maximalen) Speicherverbrauch und noch ein paar andere nette Statistiken ermitteln. Was Festplattenplatz betrifft, wüsste ich gerade nichts direktes; aber ist nicht die Anzahl der Zugriffe interessanter als der maximal verwendete Platz? Soll heißen, ein Programm, das nur 10 kB auf der Platte belegt, diese aber eine Millionmal liest und neu beschreibt, wird dafür länger brauchen als ein Programm, das einmal 100 kB rausdumpt.


    Time ist mal cool! Danke :)

    Zitat von Plantschkuh!


    Geht es dir um die Optimierung eines bestimmten Programms, oder versuchst du Statistiken über mehrere verschiedene Programme zu sammeln?

    Mir geht es darum ein Programm auf einem Superrechner auszuführen und damit ich weiß, wieviel Zeit das Programm ca. brauchen wird, soll ich mit einem Test herausfinden, wie lange es für z.B. 3k oder 300k Dateien benötigt, damit ich dann hochrechnen kann, wielange die gesamte Rechenzeit sein wird. Es braucht nicht allzu genau sein, aber da time&storage für mich alloziert werden müssen, brauch ich ein paar Werte bezüglich Laufzeit/Speicherbelegung etc. . Und dabei steh ich irgendwie auf der Leitung...

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • matmö
    7
    matmö
    Mitglied
    Reaktionen
    20
    Punkte
    435
    Beiträge
    70
    • 25. August 2010 um 11:20
    • #4

    naja, je nachdem wie quick & dirty (oder eben nicht) das sein soll - wie wärs damit?

    date >> /tmp/vmstat.log
    vmstat >> /tmp/vmstat.log
    df >> /tmp/vmstat.log

    das ganze in ein shell-skript und per cronjob jede minute (oder je nachdem welche auflösung du brauchst) ausführen.

    ansonsten gibts ja auch etliche tools zum monitoring, wie zb munin

  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 25. August 2010 um 16:12
    • #5

    Das ist wahrscheinlich gar keine so blöde Idee, es ganz einfach zu machen...Danke :)

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • wescht
    12
    wescht
    Mitglied
    Reaktionen
    9
    Punkte
    1.384
    Beiträge
    236
    • 26. August 2010 um 17:57
    • #6

    +1 für munin.

    installierbar einfach als paket, klinkt sich in einen bestehenden webserver ein. danach auf http://server/munin gehen, und sich an den diagrammen erfreuen.

    i don't like signatures

  • ag01
    1
    ag01
    Mitglied
    Punkte
    10
    Beiträge
    2
    • 15. September 2010 um 09:32
    • #7

    perf

  • Maximilian Rupp 27. Dezember 2024 um 00:09

    Hat das Thema aus dem Forum Betriebssysteme nach Betriebssysteme verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung