Einfaches Tool zum Zeichnen der Speichernutzung?


14

Gibt es ein Skript, das die Speichernutzung als Diagramm anzeigt, beispielsweise als Tortendiagramm, wobei jeder Prozess ein separates Segment ist?

Ich bin nicht auf der Suche nach Munin, um die Speichernutzung über einen bestimmten Zeitraum aufzuzeichnen , sondern um die Speichernutzung pro Prozess zu einem bestimmten Zeitpunkt anzuzeigen.

Um meine Anfrage noch dunkler zu machen, ist es für einen kopflosen Server (also keine X-Anwendungen). Der einfachste Weg wäre, eine PNG-Datei oder möglicherweise eine HTML-Datei zu schreiben (die Javascript verwenden könnte, um Prozesse zu filtern, zwischen Diagrammtypen zu wechseln usw.).

Antworten:


13

Die Speicherabrechnung pro Prozess ist aus einer Reihe von Gründen schwierig, auf die ich gleich eingehen werde. Für eine einfache Überwachung reichen wahrscheinlich gkrellmd- oder nagios-Skripte aus. Wenn Sie eine höhere Genauigkeit wünschen, müssen Sie genauer hinschauen.

smem führt das Konzept der proportionalen Satzgröße ein :

Da große Teile des physischen Speichers in der Regel von mehreren Anwendungen gemeinsam genutzt werden, wird die Speichernutzung durch das als RSS (Resident Set Size) bezeichnete Standardmaß für die Speichernutzung erheblich überschätzt. PSS misst stattdessen den "fairen Anteil" jeder Anwendung an jedem gemeinsam genutzten Bereich, um eine realistische Messung zu erhalten.

Beispiel: Sie starten GNOME und veranlassen eine Reihe von Prozessen, einen für jedes Applet und Programm. Sie alle verlinken auf libglib. Linux lädt libglib in einen Speicherblock und ordnet es jedem Prozess zu, der libglib benötigt. Naive Memory Accounting zählt die volle libglib-Größe für jeden damit verknüpften Prozess.

smem teilt die Kosten von libglib auf die Prozesse auf, die es verwenden, um ein genaueres Bild der Realität zu erhalten. Es gibt auch eine Reihe von Optionen zum Anzeigen der Speichernutzung (von der Website):

  1. Zeige grundlegende Prozessinformationen smem
  2. Systemansicht anzeigen smem -R 4G -K / path / to / vmlinux -w
  3. Gesamtsummen und Prozentsätze anzeigen smem -t -p
  4. Verschiedene Spalten anzeigen smem -c "name user pss"
  5. Prozesse anzeigen, die durch Mapping von smem-M libxml gefiltert wurden
  6. Mappings anzeigen, die nach Prozess smem -m -P [e] -Volution gefiltert sind
  7. Liest Daten aus dem Capture-Tarball smem --source capture.tar.gz
  8. Zeige ein Balkendiagramm mit der Bezeichnung pid smem --bar pid -c "pss uss"
  9. Ein Kreisdiagramm von RSS mit dem Namen smem --pie name -s rss anzeigen

Sie benötigen jedoch einen neueren Kernel (> 2.6.27).


1
Ja, ihr Vorschlag, 2.6.27 sei einigermaßen neu, ist ziemlich lächerlich. Die einzigen Distributionen, die ich kenne, sind Fedora 10 und Ubuntu 9.01.
Dave Cheney

9.04; Ubuntu 8.10 wird mit 2.6.27 ausgeliefert, 2.6.30 ist jedoch in rc3.
Jldugger

Ich entschuldige mich dafür, dass ich mich zu lange in RHEL aufgehalten habe, wo 2.6.18 als neu angesehen wird.
Dave Cheney

5

Mir fällt nichts von der Stange ein

Eine Kombination aus einem PHP-Skript, das ps -AH v | ausführt awk '{print $ 8, $ 9, $ 10}' und die Verwendung mit pChart könnte Ihnen eine Webseite geben, die das tut, wonach Sie suchen? (Verwendung in KB, Prozentsatz des Gesamt- und Prozessnamens)


1
+1, darüber habe ich mit Google Chart API nachgedacht. :)
Knoten

guter Punkt. Google Chart API ist wahrscheinlich schneller zu arbeiten mit ...
Mark Regensberg

2

Schauen Sie sich sarface an - es hängt von den sar-Daten ab und Sie können Ihre Speichernutzung (und alle anderen sar / sysstat-Daten) live überwachen.



1

Mach es selbst. Erstellen Sie ein einfaches Shell-Skript zum Aktualisieren der RRD-Datenbank. Zeichnen Sie dann mit rrdtool einen Graphen.


1

Vergessen Sie nicht das Sammeln, wenn Sie sich wirklich für niedrigere Detailstufen interessieren. Im Folgenden finden Sie ein Beispiel für die Arten der Speicherauslastung pro Prozess, die gemeldet werden kann:

RECORD 1 cag-dl585-02 (1244758290.002) (Do 11. Juni, 18:11:30 2009)

PROZESSZUSAMMENFASSUNG (Zähler sind / s)
# PID-Benutzer S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF MinF-Befehl
 9089 root S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 sendmail:
 9097 smmsp S 57600K 0 1772K 1304K 204K 736K 5904K 0 0 sendmail:
 9108 root S 6428K 0 360K 180K 84K 88K 1944K 0 0 gpm
 9120 root S 74808K 0 1136K 476K 520K 48K 1920K 0 0 crond
 9173 xfs S 20904 K 0 1828 K 1124 K 88 K 104 K 3084 K 0 0 xfs

Wenn Sie an bestimmten Prozessen interessiert sind, können Sie geeignete Filter angeben (einschließlich eines Schalters zum Anzeigen von Threads).

Und wenn Sie sich allgemein für Speicher interessieren, können Sie auch Plattendetails anzeigen und es wird sogar ein vmstat-Format ausgegeben. Warum sollten Sie Daten im vmstat-Format anzeigen, wenn das vorhandene Tool dies bereits tut? Das ist ganz einfach - mit collectly können Sie Statistiken zu einer Datei protokollieren und diese später in verschiedenen Formaten wiedergeben.

Probieren Sie es aus, es wird Ihnen gefallen


1
  1. Grep die Prozesse.
  2. Analysieren Sie die Ausgabe und speichern Sie sie im durch Kommas getrennten Format in einer Textdatei.
  3. Öffnen Sie die durch Kommas getrennte Datei in Excel.
  4. Zeichnen Sie die Grafik für diese Daten mit dem Diagramm-Dienstprogramm von Excel.

Wenn Sie Speicher-Snapshots in verschiedenen Zeitintervallen erstellen möchten ... stellen Sie den Cron-Job in einem gewünschten Intervall ein und führen Sie das Skript aus.

Ich hoffe, das hilft....


0

Dies ist nicht genau das, wonach Sie suchen, aber vielleicht können Sie es mithilfe dieser Referenz an Ihre Bedürfnisse anpassen (siehe "Pro-Prozess-Speichernutzung").




0

Ich habe nicht näher darauf eingegangen, aber collectl bietet eine Option zum Generieren von durch Trennzeichen getrennten Ausgaben. Im Fall von Gnuplot generieren Sie also einfach Ihre Daten mit Leerzeichen und fertig. Es wird sogar gut in Excel geladen. Wenn Sie Kommas wünschen, können Sie das Trennzeichen ändern und wenn Sie die rrd-Route wirklich durchführen möchten (seien Sie nur vorsichtig, da die Diagramme nicht unbedingt mit den Daten übereinstimmen!), Können Sie das Trennzeichen in Doppelpunkte und sogar die Zeitstempel in UTC ändern. -Kennzeichen


0

kSar, basierend auf sar-Daten, aber es basiert auf Java, ist also mehr oder weniger plattformunabhängig und ermöglicht es Ihnen, ssh zu einem Remote-Host zu senden, um die Daten abzurufen.

http://ksar.atomique.net/


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.