ForumRAM Verwaltung pro User bzw. pro Zess ;-) ?
herrBert – Samstag, 11. November 2006 16:31 Uhr

hi Leute,

mein Title sagt schon alles, wir möchten auf unserem Fileserver die RAM Auslastung für jeden User bzw. jeden Prozess als Gesamtheit haben:
z.B.: smbd => 100Mb
www-run => 70Mb
bla-blub …

herkömmliche Tools wie sar, vmstat, free, ps,pmap usw. liefern mir ja lediglich nur
ein Gesamtergebnis oder eine Auflistung.

Kennt jemand ein Tool, das diese Auflistung bietet?

Gruß Markus

2 Antworten
Günter Frenz – Sonntag, 12. November 2006 14:19 Uhr

Mit awk die passenden Zeilen aus einer Auflistung herausfiltern und die gewünschten Spalten aufaddieren lassen. Die Filterung kann man auch durch grep erledigen lassen und eine Pipeline bauen, dann ist die Fehlersuche einfacher.

Beispiel:

grep Muster Datei | awk ‘{summe += $3} END {print summe}’

sucht Zeilen mit dem Muster in der Datei und übergibt diese an awk, was dann die dritte Spalte (durch “white space” getrennt) aufaddiert und das Ergebnis auf den Bildschirm schreibt. Statt aus einer Datei zu lesen kann man natürlich auch die Ausgabe eines anderen Befehls per weiterer Pipeline an grep übergeben…

Günter

herrBert – Sonntag, 12. November 2006 19:35 Uhr

Das ist SUPER, ich danke Dir vielmans ;-)

herrBert – Sonntag, 12. November 2006 19:36 Uhr

-n +l ;-)

herrBert – Sonntag, 12. November 2006 21:02 Uhr

also ich habe das ganze nun mal in ein Perlskript gepackt und wollte das ausführen. leider klappt das nicht ganz ;-((

hier mal mein code:

#! /usr/bin/perl -w

if (@ARGV == 1)
{
print “RAM-Verbrauch von @ARGV wird ermittelt … \n”;
$get_ps = `ps -o uname,uid_hack,pmem,rss,cmd -e |sort | grep @ARGV | grep -v ‘grep’ | \
grep -v ‘perl’ | awk ‘{summe += $4}END{print summe}’`;
print “$get_ps \n” ;

}
else
{
print “\n”;
print “USAGE: ./eatmyram.pl \n”;
print “FOR EXAMPLE: ./eatmyram.pl smbd \n”;
print “\n”;
}

wo liegt denn dort mein Fehler?

Günter Frenz – Montag, 13. November 2006 18:18 Uhr

Ich frage mich im Moment zwar, wieso du das Ganze nochmal in Perl verpackst und nicht einfach ein Shell-Script nimmst, aber wie auch immer: die Pipeline von ps bis awk ist wohl so in Ordnung, liefert bei mir jedenfalls auch plausible Ergebnisse.

Das drumherum in Perl kann ich nur begrenzt beurteilen, vielleicht hilft es, statt den Backticks die system()-Funktion für den Aufruf der Pipe zu verwenden. Ich denke, das Problem liegt in der Übergabe des Rückgabewerts der Pipe. Wenn das nicht hilft bitte präzisere Angeben über den aufgetretenen Fehler…

hth

Günter

Ecaroh – Dienstag, 14. November 2006 17:43 Uhr

pmap?