WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   "speicherverbrauch pro user" monitor ? (http://www.wcm.at/forum/showthread.php?t=196123)

ingomar 28.07.2006 15:55

"speicherverbrauch pro user" monitor ?
 
Hallo allerseits,

kennt hier jemand eine effektive art,
1, speicherverbrauch im RAM und
2, dieses pro user zu "monitor´n/accounten" ?

Das Ganze konsolidiert, also nicht als Liste aller Userprozesse, sondern eine einfache Zahl, wie z.b. "User GRA mit 800 MB" im ram...


ich habe/kenne selbst sar - das macht aber leider keine Unterscheidung pro User... vielleicht kennt da jemand was ?

OS ist übrigens Linux Rothut oder Debian, es sind Entwicklermaschinen wo halt pro User schon mal 20 ssh und paar andere Sachen drauf sind.... ;)

Danke

citizen428 28.07.2006 17:04

Hier ein Bash-Schnellschuss, liefert den Gesamtverbrauch in KB:

Zitat:

mem_total=0; for i in `ps -U [username] ho size` ; do mem_total=$(($i + $mem_total)) ; done ; echo $mem_total

ingomar 31.07.2006 09:02

klingt fein, thanks...

ich glaub, ich werd das ding in einen halbwegs flotten cronjob einbauen, dann bekomme ich eine art history raus...

citizen428 01.08.2006 18:14

Weil mir vorher ein paar Minuten fad war...

/usr/local/bin/mem_total
Code:

mem_total=0

for i in `ps -U $1 ho size`
    do
        mem_total=$(($i + $mem_total))
    done
[ $mem_total -gt 0 ] && echo "$1: ${mem_total}kB ($(($mem_total/1024))MB)"

In folgender for-Schleife aufgerufen, gibt dir das für alle User aus /etc/passwd den Speicherverbrauch in kB und MB (aber nur wenn diese auch wirklich Speicher verbrauchen):

Code:

for i in `cat /etc/passwd | grep -v "^#" | cut -d":" -f1` ; do
/usr/local/bin/mem_total $i ; done;

Output:
Code:

root: 38984kb (38MB)
daemon: 248kb (0MB)
lp: 1104kb (1MB)
www-data: 2780kb (2MB)
Debian-exim: 884kb (0MB)
messagebus: 372kb (0MB)
ntp: 528kb (0MB)
nagios: 260kb (0MB)
hal: 1644kb (1MB)
foo: 12012kb (11MB)
[snip]


citizen428 01.08.2006 18:46

Und wieder 5 Minuten togeschlagen... ;)

Code:

#!/bin/bash


 if [ $# -eq 1 ]
    then
        users=$1
    else
        users=`cat /etc/passwd | grep -v "^#" | cut -d":" -f1`
 fi

 for user in $users ; do
    mem_total=0

    for i in `ps -U $user ho size` ; do
        mem_total=$(($i + $mem_total))
    done

    [ $mem_total -gt 0 ] && echo "$user: ${mem_total}kb ($(($mem_total/1024))MB)"
done

Ohne Parameter gibt dir das Skript die komplette Userliste aus (so wie die for-Schleife im vorigen Post), alternativ kannst du das Skript mit genau einem Usernamen aufrufen, dann bekommst du nur den Speicherverbrauch dieses Benutzers. :)

Code:

$ mem_total foo
foo: 268748kb (262MB)

$ mem_total
root: 38984kb (38MB)
daemon: 248kb (0MB)
lp: 1104kb (1MB)
www-data: 2780kb (2MB)
Debian-exim: 884kb (0MB)
messagebus: 372kb (0MB)
ntp: 528kb (0MB)
nagios: 260kb (0MB)
hal: 1644kb (1MB)
foo: 12012kb (11MB)
[snip]


Who-T 02.08.2006 10:48

http://virtualthreads.blogspot.com/2...-on-linux.html

citizen428 02.08.2006 12:18

@Who-T: guter Einwurf, ich bin nämlich davon ausgegangen, dass das dem OP klar ist.

Deswegen hab ich gestern daheim auch noch angefangen eine kleine C-Version die /proc/<pid>/statm auswertet zu schreiben, aber wie ich mich kenne ist das wieder so ein Ding, das nie fertig wird (vor allem weil ich seit Jahren kein C mehr geschrieben hab)... ;)

ingomar 02.08.2006 13:36

*lol* citizen428, bitte schreib dir keinen wolf :D

der einwurf des Who-T war gut, aber das hat nicht wirklich viel zu tun... im endeffekt gehts hier um einen/ ein paar rechner der type dl380 oder äquivalent, die mit 4 gb ram oder mehr für entwickler bereitstehen...

... os ist rotschopf, und wie gesagt es gibt einfach manche profis, die die maschine einfach so weit vollsch**xen, das trotz grossem swapspace einfach nix mehr geht...

es gäbe ja möglichkeiten über security/limits den speicherverbrauch einzuschränken, aber das kann bei testmaschinen einfach saumässig nach hinten losgehen, deswegen möcht ichs memory irgendwie mit ansehen bzw. monitoren und niederschreiben.
letzteres allerdings ist pro prozess bedingt sinnvoll, weil mehrere user hier verschiedene DB-apps ausführen, die dann zusammen zum teil die lustigsten wirkungen haben :D

anyway, freue mich über weiteres, den zweck an sich hats aber schon erfüllt ( mir ists ja sogar egal ob kb oder mb, weil man dank cronjob sieht, das die frisch entwickelte routine/apps eines kollegen einmal 15000K und dann plötzlich knappe 4 gb gefressen haben)...



dickes lob jedenfalls !

citizen428 02.08.2006 15:47

Zitat:

Original geschrieben von ingomar
*lol* citizen428, bitte schreib dir keinen wolf :D

Kein Problem, ich bin nach der ersten Bash-Version einfach nur drauf gekommen, dass ich das Teil selbst nicht unpraktisch finde. ;)

Die C-Variante ist nur eine Spielerei für mich selbst, hauptsächlich um meine angestaubten C-Skills wieder ein wenig auf Vordermann zu bringen...

colossus 03.08.2006 16:45

Zitat:

Original geschrieben von citizen428
Code:

for i in `cat /etc/passwd | grep -v "^#" | cut -d":" -f1` ; do
/usr/local/bin/mem_total $i ; done;


Think of the kittens!!!1 :( :ugly:

scnr :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag