Speicherauslastung unter Top ...

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
msgbeep
Posts: 62
Joined: 2002-10-08 11:27

Speicherauslastung unter Top ...

Post by msgbeep » 2004-12-13 13:47

Unter Top wird mir der momentane Systemzustand angezeigt.

Nun, wenn ich das hier lese:

Mem: 2072260k total, 2065880k used, 6380k free, 59340k buffers
Swap: 2040244k total, 1896k used, 2038348k free, 1747344k cached

kommt mir doch der graue Star ins Auge, damit ich das nicht sehen will !
Aber meine Frage ziehlt auf folgendes ab.

Wie kann ich herausbekommen, was alles wieviel Speicher belegt.
Also Programme und Nutzer.
Der Top selbst zeigt keinerlei Systemauslastung dahingehend an, daß man sieht, warum soviel Speicher belegt ist.
Kann man da was machen ????

Danke
msgbeep

chris76
Moderator
Moderator
Posts: 2015
Joined: 2003-06-27 14:37
Location: Germering

Re: Speicherauslastung unter Top ...

Post by chris76 » 2004-12-13 14:15

Hi

Der Schalter m ist vielleicht das was du bei top suchst,

ansonsten

Code: Select all

ps aux | awk '{ print $4, $1, $2, $3, $11 }' | sort -n
Listet dir die Prozesse sortiert nach Speicherbedarf auf, oder habe ich dich falsch verstanden?
Gruß Christian

BofH excuses: YOU HAVE AN I/O ERROR -> Incompetent Operator error

tally
Posts: 59
Joined: 2004-11-08 21:21

Re: Speicherauslastung unter Top ...

Post by tally » 2004-12-13 15:18

chris76 wrote:[...]oder habe ich dich falsch verstanden?
Richtig, der Typ macht nämlich den typischen Linux Newbie Fehler und kann "cached" und "buffers" Werte nicht richtig interpretieren und peilt deswegen den Speicherzustand überhaupt nicht.

msgbeep
Posts: 62
Joined: 2002-10-08 11:27

Re: Speicherauslastung unter Top ...

Post by msgbeep » 2004-12-13 16:13

Mir ist nicht klar, warum von 2 GB fast 2 GB im Speicher gehalten werden und nichts in den SWAP verschoben wird.
Auch wenn ich ein Newbie in Deinen Augen bin tally, aber soviel hab ich mal in meiner Betriebssystem VL an der Uni gehört, das der Speicher nicht unnötig voll gelassen wird und nur ausgelagert wird, wenn der Speicher "voll" ist.

Nun ich wollte schon das wissen, danke chris76!

Ergebnis des Kommandos:

0.0 daemon 1934 0.0 /usr/sbin/atd
0.0 postfix 12655 0.0 nqmgr
0.0 postfix 13000 0.0 pickup
0.0 postgres 1900 0.0 /usr/bin/postmaster
0.0 postgres 1904 0.0 postgres:
0.0 postgres 1905 0.0 postgres:
0.0 root 10 0.0 [events/0]
0.0 root 1 0.0 init
0.0 root 1092 0.0 [kjournald]
0.0 root 11 0.0 [events/1]
0.0 root 11701 0.0 /usr/sbin/saslauthd
0.0 root 11702 0.0 /usr/sbin/saslauthd
0.0 root 11703 0.0 /usr/sbin/saslauthd
0.0 root 11704 0.0 /usr/sbin/saslauthd
0.0 root 11705 0.0 /usr/sbin/saslauthd
0.0 root 12 0.0 [events/2]
0.0 root 12653 0.0 /usr/libexec/postfix/master
0.0 root 12861 0.0 -bash
0.0 root 13 0.0 [events/3]
0.0 root 13037 0.0 ps
0.0 root 13038 0.0 awk
0.0 root 13039 0.0 sort
0.0 root 131 0.0 [kseriod]
0.0 root 14 0.0 [khelper]
0.0 root 15 0.0 [kacpid]
0.0 root 1602 0.0 syslogd
0.0 root 1606 0.0 klogd
0.0 root 1616 0.0 irqbalance
0.0 root 1678 0.0 rpc.idmapd
0.0 root 1756 0.0 /usr/sbin/acpid
0.0 root 1787 0.0 /usr/sbin/sshd
0.0 root 1801 0.0 xinetd
0.0 root 1862 0.0 gpm
0.0 root 1917 0.0 crond
0.0 root 1949 0.0 mdadm
0.0 root 197 0.0 [scsi_eh_0]
0.0 root 1971 0.0 /sbin/mingetty
0.0 root 1972 0.0 /sbin/mingetty
0.0 root 1973 0.0 /sbin/mingetty
0.0 root 1974 0.0 /sbin/mingetty
0.0 root 1975 0.0 /sbin/mingetty
0.0 root 1976 0.0 /sbin/mingetty
0.0 root 2 0.0 [migration/0]
0.0 root 207 0.0 [kjournald]
0.0 root 2825 0.0 /usr/sbin/vsftpd
0.0 root 3 0.0 [ksoftirqd/0]
0.0 root 40 0.0 [kblockd/0]
0.0 root 4 0.0 [migration/1]
0.0 root 41 0.0 [kblockd/1]
0.0 root 42 0.0 [kblockd/2]
0.0 root 43 0.0 [kblockd/3]
0.0 root 44 0.0 [khubd]
0.0 root 5 0.0 [ksoftirqd/1]
0.0 root 53 0.0 [pdflush]
0.0 root 54 0.0 [pdflush]
0.0 root 55 0.0 [kswapd0]
0.0 root 56 0.0 [aio/0]
0.0 root 57 0.0 [aio/1]
0.0 root 58 0.0 [aio/2]
0.0 root 59 0.0 [aio/3]
0.0 root 6 0.0 [migration/2]
0.0 root 7 0.0 [ksoftirqd/2]
0.0 root 8 0.0 [migration/3]
0.0 root 9 0.0 [ksoftirqd/3]
0.0 rpc 1633 0.0 portmap
0.0 rpcuser 1652 0.0 rpc.statd
%MEM USER PID %CPU COMMAND
0.1 postgres 3123 0.0 postgres:
0.1 root 12859 0.0 sshd:
0.2 apache 12695 0.0 httpd
0.2 apache 12696 0.0 httpd
0.2 apache 12697 0.0 httpd
0.2 apache 12698 0.0 httpd
0.2 apache 12699 0.0 httpd
0.2 apache 12700 0.0 httpd
0.2 apache 12701 0.0 httpd
0.2 apache 12702 0.0 httpd
0.2 postgres 3293 0.0 postgres:
0.2 postgres 3309 0.0 postgres:
0.2 root 12694 0.0 httpd
0.2 root 1967 0.0 /usr/bin/perl
0.3 postgres 3391 0.0 postgres:
0.5 postgres 12987 9.6 postgres:
0.5 postgres 12988 14.5 postgres:
0.5 postgres 12989 13.7 postgres:
0.5 postgres 12990 5.5 postgres:
0.5 postgres 12991 4.8 postgres:
0.5 postgres 12994 6.7 postgres:
0.5 postgres 12995 6.0 postgres:
0.5 postgres 12996 23.3 postgres:
0.5 postgres 12997 11.0 postgres:
0.5 postgres 12998 4.0 postgres:
0.5 postgres 3370 0.0 postgres:
0.5 postgres 3390 0.0 postgres:
10.9 root 2167 0.0 /usr/local/java/jdk1.5.0//bin/java

Wie man erkennen kann, frist hier keine der laufenden Anwendungen Speicher.
Gibts ne andere Mögichkeit das heraus zu finden ?

Danke msgbeep

PS: Es ist kein RootServer von 1und1, sondern ein Administrierbarer Server, der einen Tomcat drauf laufen hat und eine dementsprechende Application. Da ich wissen wollte, ob diese den Speicher frist, oder nicht, ist mir das wichtig gewesen.
Und ja, ich hatte vorher keine Ahnung, wie das geht.
Normal, wenn ich kein Admin bin, sondern ein Entwickler, der ab und zu mal ein paar Aufgaben des Admins erledigen muss ;(

tally
Posts: 59
Joined: 2004-11-08 21:21

Re: Speicherauslastung unter Top ...

Post by tally » 2004-12-13 16:30

@msgbeep

Oh, ein großer Theoretiker.

Wenn Du was lernen willst, dann starte folgendes script und verfolge unter top die Werte zu cached und buffers. Vielleicht geht dir dann ein Licht auf...
Ach ja, das script erzeugt im aktuellen Verzeichnis 90 Dateien die du nachher wieder löschen solltest.

Code: Select all

typeset -i i=0 ; while [ $((i++)) -lt 90 ] ; do ls -laR / 2>&1 | bzip2 -qf9 - > lslaR$i.bz2 & done

kawfy
Posts: 307
Joined: 2002-08-08 23:45

Re: Speicherauslastung unter Top ...

Post by kawfy » 2004-12-13 16:43

msgbeep wrote:Unter Top wird mir der momentane Systemzustand angezeigt.
[...]
Wie kann ich herausbekommen, was alles wieviel Speicher belegt.
Also Programme und Nutzer.
Der Top selbst zeigt keinerlei Systemauslastung dahingehend an, daß man sieht, warum soviel Speicher belegt ist.
Kann man da was machen ????
:arrow: Rufe top(1) auf, und klicke -- äh, tippe auf "M" und schau dir die Liste sortiert nach Speicherverbrauch an. Dann tippe wieder auf "P" oder "q".

Anschließend mache dich bitte mit top(1) vertraut. Danke.

msgbeep
Posts: 62
Joined: 2002-10-08 11:27

Re: Speicherauslastung unter Top ...

Post by msgbeep » 2004-12-14 14:18

mit top m gibts nur sowas...

Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0% us, 0.1% sy, 0.0% ni, 99.9% id, 0.0% wa, 0.0% hi, 0.0% si

toll ist, wenn postgres mal losläuft, , wird der Prozeß mit 99,9 im Sekundenbereich abgearbeitet.
Klar, wenn kein Speicher vorhanden ist, kann er nur mit der Resource arbeiten, die da ist. Allerdings kann man beobachten, daß sich der SWAP nicht füllt, sondern alles nur im Speicher bearbeitet wird.
Ein wenig komisch.

Nun ist die Frage, ist da irgendwas kaputt oder warum wird nichts in den SWAP geladen.

Mit top brauch ich mich nicht unbedingt auseinandersetzen, denn das man gibt genügend aufschluß und unter top mit ? kann man sich auch alles anzeigen lassen was wichtig ist an kommandos.

Wenn keiner weiß warum, dann werden wir wohl oder übel mal den SP kontaktieren müssen, damit er sich darum kümmern muß.

Danke aber für die Hinweise...

msgbeep

PS: Theorethiker bin ich nicht, denn ich hasse alles was total theoretisch ist.

cjhbabel
Posts: 63
Joined: 2002-07-18 12:09

Re: Speicherauslastung unter Top ...

Post by cjhbabel » 2004-12-14 14:42

msgbeep wrote:Nun ist die Frage, ist da irgendwas kaputt oder warum wird nichts in den SWAP geladen.
Weil es nicht notwendig ist? Was Dir einige versucht haben zu sagen ist, dass Linux den Speicher der nicht "gebraucht" wird zum Cachen der Platten benutzt. Mit anderen Worten: "Es wird niemals freier Speicher angezeigt". Hier ist z.B. ein Rechner mit 4 GB RAM, da wird auch keiner freier Speicher angezeigt. Sobald ein Process Speicher braucht wird einfach etwas von dem Speicher unter "buffers" weggenommen. Also alles im grünen Bereich.

Code: Select all

14:36:00 up 90 days, 18:16,  1 user,  load average: 0.00, 0.00, 0.00
147 processes: 146 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:   0.0% user,   0.1% system,   0.0% nice,  100.0% idle
Mem:   3762300K total,  3724516K used,    37784K free,   176412K buffers
Swap:  2097136K total,      880K used,  2096256K free,  3086244K cached

msgbeep
Posts: 62
Joined: 2002-10-08 11:27

Re: Speicherauslastung unter Top ...

Post by msgbeep » 2004-12-14 14:43

tally wrote:

Code: Select all

typeset -i i=0 ; while [ $((i++)) -lt 90 ] ; do ls -laR / 2>&1 | bzip2 -qf9 - > lslaR$i.bz2 & done
Ehm nun, es sind vielleicht 10 Minuten vergangen.
Ich habe also unter laufendem top deine Zeile ausgeführt und es wurden knapp 10 MB in 90 Dateien angelegt.
Diese hab ich dann - nach dem ich mir 3 angeschaut hab und nichts verstanden hab, außer daß viele Listings drin standen von Verzeichnissen - gelöscht.

Und tja, was soll ich sagen, es wurden knapp 1.5 GB an RAM frei.
Wüde mich mal interessieren, was denn das genau bewirkt, aber ich studiere lieber mal im man, als daß ich hier wieder beschimpft werde ...

msgbeep

kawfy
Posts: 307
Joined: 2002-08-08 23:45

mehr vom top-Output, bitte!

Post by kawfy » 2004-12-14 14:43

msgbeep wrote:mit top m gibts nur sowas...

Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0% us, 0.1% sy, 0.0% ni, 99.9% id, 0.0% wa, 0.0% hi, 0.0% si
Bitte zitiere doch mal den top-Output inkl. der ersten 20 Prozesse. Dein Zitat sagt nämlich gar nix aus. :roll:
msgbeep wrote:toll ist, wenn postgres mal losläuft, , wird der Prozeß mit 99,9 im Sekundenbereich abgearbeitet.
Klar, wenn kein Speicher vorhanden ist, kann er nur mit der Resource arbeiten, die da ist. Allerdings kann man beobachten, daß sich der SWAP nicht füllt, sondern alles nur im Speicher bearbeitet wird.
Ein wenig komisch.
Dein postgresql-Prozess bekommt 99,9% der CPU, weil da sonst nix anderes rechnet. Freu dich doch.
msgbeep wrote:Nun ist die Frage, ist da irgendwas kaputt oder warum wird nichts in den SWAP geladen.
Weil ja noch RAM frei ist, bzw. er wird frei, weil der buffer cache reduziert wird.
msgbeep wrote:[...]
Danke aber für die Hinweise...

msgbeep

PS: Theorethiker bin ich nicht, denn ich hasse alles was total theoretisch ist.
Ohne "Theorie", und das bedeutet hier: "verstehen, was abläuft" bleibt dir immer noch die blödeste, aber dennoch wirksame Lösung: das Problem mit Hardware erschlagen. Natürlich könnte man dir mehr helfen, genauer: dir erklären, warum was so ist und nicht anders. Aber zum Glück müssen wir es nicht :P

rootmaster
RSAC
Posts: 536
Joined: 2002-04-28 13:30
Location: Hannover

Re: Speicherauslastung unter Top ...

Post by rootmaster » 2004-12-14 19:26

am besten überblickst du die verhältnisse, wenn du dir mal ein "free -t" anschaust.
z.b.

Code: Select all

             total       used       free     shared    buffers     cached
Mem:        125960     119200       6760          0      29920      12848
-/+ buffers/cache:      76432      49528
Swap:       193528       5460     188068
Total:      319488     124660     194828
die "mem"-zeile zeigt dir die verhältnisse im ram:
free+buffers+cached ist der letzte wert der 2.zeile und beschreibt aus sicht eines prozesses den verfügbaren ram-speicher. der wert davor ist der von anderen prozessen belegte speicher im ram. (buffers=i/o-buffer der prozesse, cached=von prozessen oft zugegriffene filedaten). shared beschreibt dem gemeinsamen speicherbereich von prozessen und kann sich auch auf buffer und cache beziehen (der wert ist dann grösser als der erste wert in der 2.zeile).
wenn man von der summe der beiden werte in der 2.zeile den "free"-wert in der 1.zeile abzieht, erhält man den gesamten benutzen speicher im ram (2.wert, 1.zeile). der "total"-wert in der 1.zeile ist daher die summe der beiden werten der 2.zeile (dass der "total"-wert kleiner als der systemspeicher ist, liegt übrigens daran, dass der kernel auch speicher belegt, der nicht für andere prozesse zur verfügung steht ;))
steht nun für einen prozess weniger speicher zur verfügung als der "free"-wert anzeigt, werden "saubere" buffers oder cache-speicher benutzt, resp. "dirty" buffers vorher auf die disk geschrieben. davon zu unterscheiden ist das swapping von ramspeicher, das "inaktive" pages nach einem LRU-algorithmus in den swapbereich auslagert und bei aktivierung wieder in den ramspeicher holt. die aktuellen werte sind in der "swap"-zeile angegeben.
der "total"-wert der letzten zeile ist folglich die summe der entsprechenden spalten der "mem"- und "swap"-zeile.

"back to the roots"

msgbeep
Posts: 62
Joined: 2002-10-08 11:27

Re: Speicherauslastung unter Top ...

Post by msgbeep » 2004-12-20 09:40

total used free shared buffers cached
Mem: 2072260 1946724 125536 0 126976 1463184
-/+ buffers/cache: 356564 1715696
Swap: 2040244 0 2040244
Total: 4112504 1946724 2165780


Also der momentane Zustand sie wie folgt aus (oben) ...

Da kann ich mir nicht mal erklären, warum beim swap used eine 0 drin steht.
Absolut nicht :(


@kawfy:
Wenn ein Prozeß auf einer Dual Xeon Maschine mit 99,9% CPU läuft, find ich das ein wenig komisch. Kein anderer Prozeß sollte soviel Zeit verbrauchen. Und wenn, dann sicher nicht mehr als 30 Sekunden.
Wenn man auf einen Request im Browser wartet, dann kann man doch nicht erwarten, daß der Prozess, der den Request erstellt mit seinen Child Prozessen, 30 oder etwas mehr Sekunden braucht, um diesen für die Auslieferung fertig zu stellen.
Vielleicht irre ich mich auch.

Unsere Applikation auf einem lokalen Server läuft von den Anfragen her um einiges besser. Der Request der auf dem Server im Netz 99,9 % CPU Last erzeugt, erzeugt lokal nicht mehr als 30%. Stimmt uns nachdenklich. Und die Anfrage wird nicht mit um die 30 Sekunden bearbeitet, sondern innerhalb von max. 4 Sekunden.

Es gibt einige Ungereimtheiten, die für uns derzeit verwirrend sind.

Wir werden jetzt nicht nur lokal testen, sondern auch auf einen anderen Server ausweichen und dort testen.
Berichte wie diese verlaufen sind !

Danke aber erstmal für die Hilfe an alle !

msgbeep

dehoeninger
Posts: 10
Joined: 2003-10-26 15:47

Re: Speicherauslastung unter Top ...

Post by dehoeninger » 2004-12-20 13:25

msgbeep wrote:total used free shared buffers cached
Mem: 2072260 1946724 125536 0 126976 1463184
-/+ buffers/cache: 356564 1715696
Swap: 2040244 0 2040244
Total: 4112504 1946724 2165780


Also der momentane Zustand sie wie folgt aus (oben) ...

Da kann ich mir nicht mal erklären, warum beim swap used eine 0 drin steht.
Absolut nicht :(
Hmm warum kannste dir das nicht erklären ???
Aus den oben genannten Daten geht doch hervor, dass nur 356564 Byte Speicher momentan fest verwendet werden und noch 1715696 Byte im grunde zur freien Verfügung stehen, warum sollte er dann anfangen zu Swapen.

msgbeep
Posts: 62
Joined: 2002-10-08 11:27

Re: Speicherauslastung unter Top ...

Post by msgbeep » 2004-12-20 16:08

Okay, habs verstanden, was das betrifft.

Der Server brauchte aber einen kompletten Neustart, meinte der Provider heute ...
Nun, läuft momentan problemlos.
Und das der Speicher unter free ständig weniger wird ist auch normal ?
Naja unsere Applikation scheint doch nicht so gut programmiert zu sein...

Wir schauns uns schon an...

msgbeep

tally
Posts: 59
Joined: 2004-11-08 21:21

Re: Speicherauslastung unter Top ...

Post by tally » 2004-12-20 16:16

msgbeep wrote:Okay, habs verstanden, was das betrifft.
[...]
Wow, eine Woche und 5 Erklärungsversuche später hat es endlich klick gemacht. :roll:

Bin schon auf die Fortsetzung der Geschichte gespannt, das kann noch richtig unterhaltsam werden :lol:

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Speicherauslastung unter Top ...

Post by dodolin » 2004-12-20 23:54

Wow, eine Woche und 5 Erklärungsversuche später hat es endlich klick gemacht.
Nein, wohl immer noch nicht, siehe:
Der Server brauchte aber einen kompletten Neustart, meinte der Provider heute ...
Nun, läuft momentan problemlos.
Und das der Speicher unter free ständig weniger wird ist auch normal ?
Apropos: Hier handelt es sich um eine FAQ: http://www.rootforum.org/faq/index.php ... 14&lang=de

Bitte auch die dort genannten Links konsultieren.

msgbeep
Posts: 62
Joined: 2002-10-08 11:27

Re: Speicherauslastung unter Top ...

Post by msgbeep » 2004-12-30 09:49

Danke für die Antwort.
Ich werde mich wohl eingehender damit beschäftigen müssen als mir lieb ist.

msgbeep