Linux etwas Speicherhungrig ??

sono

sono

Sack Flöhe Hüter
Kann dass sein Das Linux etwas speichergierig ist ?

Mein Arbeitspeicher scheint bis oben hin voll zu sein. Egal wieviel oder wie wenig Fenster ich offen habe.

Sehr interessant ist der "Taskmanager " von Gnome der mit gerade vertickert hat , dass :

Firefox 100 MB
Myslqd 120 MB
Evolution 170 MB
Quanta 150 MB
xmms 50 MB
und OpenOffice sagen und schreiben 240 MB Arbeitspeicher in Anspruch nehmen.

Das kommt mir ein wenig krass viel vor zumal da noch einig andere Brocken drin stehen die auch zusammen noch mal ein paar 100 MB belegen .

Ich hab ähnliches auch bei anderen Linuxrechnern gesehen. Ist das normal ?
Mir kommmt das als sovor als ob der volle Speicher das System immer mal wieder derb ausbremst vor allem wenn ich Open Office starte kanns ne weile dauern . Dafür geht dann die Festplattebelastung stark nach oben und man merkt wie aufeinmal wie doof ausgelagert wird .

Gruß SOno
 
Naja Linux hat ein andere Speichermanagment als Windows , Linux schiebt alles was es kann in den RAM , Windows dagegen nicht.

MFG

Dennis
 
Mh, es ist so, dass ein Programm Memory reservieren kann jedoch nicht effektiv nutzt. Dazu kommt noch, dass Filesystem-Dinge gecached werden. Jedoch ist das Filesystemcaching IMHO nicht pro Program :).
 
Wenn ich aller Werte unter VM-Memory addiere komme ich auf ca. 480MB welches genau meinem RAM entspricht. Ich gehe somit davon aus dass zwischengespeichertes mitgezählt wird (belegt sind nur 125MB).
 
Hab mir das mal näher angeschaut , da reservieren einige Programme aber ganz schön gut Speicher und die ganzen Libs die sie laden machen dasselbe.

Wenn ich Speicher einfach mal so reserviere ohne ihn zu nutzen dann ist dass ja nicht unbedingt wirklich positiv oder ? Vor allem schlafende Programme die 50 MB und mehr Speicher halten sind für mich echt ein Rätsel.

Wozu braucht MySQld 160 MB ?? Der läuft ja kaum .

Muss mal schaun dass ich alles was ich nicht durchgehend benötige nur noch per inetd starten lasse oder so.
 
Nee das hat seine Richtigkeit. Wenn der Speicher anderweitig benötigt wird, wird er schon umverteilt, so steht er aber der Anwendung zur Verfügung wenn sie ihn braucht.

Freier Speicher ist zuviel gekaufter Speicher sozusagen :)
 
Oracle ist ein Monster .

Wozu braucht das ding aleine bei der installation Standartmäsig schon ein paar GB ?? Das ist keine Datenbank mehr das ist schon fast ein Betriebsystem.

Musste mich mal ein Semester damit Rumklopfen. Da bleib ich doch lieber bei Postgre.

Das ist meiner Meinung nach eine etwas bessere Datenbank als Mysql und Postgre hat nur 18 Mb Speicher gekrallt .

Also die Aussage dass es eine Datenbank ist erklärt nicht unbedingt warum MySQL 160 MB Speicher hortet ohne auch nur einmal wirklich verwendet zu werden. (Brauchs eigentlich nur gelegentlich um meine Scripte zu testen , wenn ich auf nem server kein postgre habe )

Freier Speicher ist zuviel gekaufter Speicher sozusagen

Dann muss ich also durchgehend meine CPU auf 100 % laufen lassen ?
Sonst hätte ich ja Geld verschwendet wenn wir der Logik folgen.
Die Gk sollte man auch diversen Gimiks auf trab halten sonst lohnt sichs ja nicht. :devil:

Würde mal eher sagen freier Speicher ist zur Reserver dann wenn man ihn mal braucht das macht schon Sinn .
Wenn du was Speicherlastiges starten willst hättest du sonst ja keine Reserver mehr für den Rest vom System. Speicher kann man also fast nicht zu viel haben würde ich jetzt mal so in den Raum werfen.
 
Zuletzt bearbeitet:
Hallo,
mach mal ein "free -m", dass sieht dann ungefähr so aus:

Code:
             total       used       free     shared    buffers     cached
Mem:          1010        605        405          0         53        345
-/+ buffers/cache:        206        803
Swap:          258          0        258

hier sieht man z.B. das bei mir 605MB belegt ist. Wirklich "aktuell" belegt ist aber nur 206MB, der Rest ist Buffer+Cache.
Warum sollte Linux den Speicher nicht nutzen wenn er doch vorhanden ist?

Ein kleines Beispiel, deine Datenbank macht irgendwas mit deinen Daten wozu alle Daten in den Arbeitsspeicher müssen um es mit max. speed zu erledigen. Also wird alles in den Arbeitsspeicher geladen. Wenn du jetzt genug Speicher hast und gerade nicht mehr brauchst, warum sollte man die Daten nach der Ausführung der Aufgabe wieder aus dem Speicher entfernen? Vielleicht kommt ja irgendwann wieder ein Datenbankzugriff welcher dann davon profitiert wenn die Daten schon im Speicher sind. Braucht dagegen ein anderes Programm den Speicher sind die Daten viel schneller wieder raus geschmissen als man sie reinschreiben kann wenn sie die Dantenbank wieder brauchen würde.
Sowas nennt sich intelligente Speichernutzung. Speicher ist dazu da genutzt zu werden und nicht um leer herum zu liegen.
 
Code:
sono@solap:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           503        496          7          0         12        171
-/+ buffers/cache:        312        191
Swap:            0          0          0
sono@solap:~$

Momentan läuft alles recht gut da ich eben mal alles gekillt habe was ich nicht brauche vom sshd zu exim samba mysql und noch ein paar kleinigkeiten.

Müsste mal rebooten und schauen wie das dann aussieht .

Vermutlich mute ich meinem Lappie einfach etwas zuviel zu . Werde mich mal ein inetd einlesen wie schon erwähnt dass sollte das Problem etwas mildern.
 
BTW diese Frage gab es schon mehrmals im Board.

Ich finde das Speichermanagment sehr interessant, man kanns aber nur verstehen wenn man weiß wie es funktioniert :) - deswegen stellen sich ja auch viele User diese Frage

MFG

Dennis
 
sono schrieb:
Code:
sono@solap:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           503        496          7          0         12        171
-/+ buffers/cache:        312        191
Swap:            0          0          0
sono@solap:~$

Momentan läuft alles recht gut da ich eben mal alles gekillt habe was ich nicht brauche vom sshd zu exim samba mysql und noch ein paar kleinigkeiten.

Müsste mal rebooten und schauen wie das dann aussieht .
Nicht anders, gekillt ist nun mal gekillt, also kein reservierter zusatz speicher, etc. Wir sind hier doch nicht bei M$, wo man alle halbe Stunde rebooten muss, um einen Treiber neu zuladen oder sonstiges.
sono schrieb:
Vermutlich mute ich meinem Lappie einfach etwas zuviel zu . Werde mich mal ein inetd einlesen wie schon erwähnt dass sollte das Problem etwas mildern.

11dennis schrieb:
BTW diese Frage gab es schon mehrmals im Board.

Ich finde das Speichermanagment sehr interessant, man kanns aber nur verstehen wenn man weiß wie es funktioniert :) - deswegen stellen sich ja auch viele User diese Frage

MFG

Dennis
Es gibt da schöne Bücher. Z.B.:
Understanding the Linux Virtual Memory Manager (http://www.csn.ul.ie/~mel/projects/vm/guide/html/understand/)
Kernel Architektur (habe ich selbst gelesen - ist ganz gut -, wollte danach bloß nichts mehr mit so einem monolithischen uralt Kernel wie Linux zutun haben)
 
Zuletzt bearbeitet von einem Moderator:
linux ist mit dem RAM wirklich etwas sonderbar.
jedes linux-system, das ich bis jetzt gesehen habe, hatte spätestens 10mins nach dem reboot nen vollen RAM, egal wie viel da drinn is. Interessanterweise ist die swap-partition bei manchen überhaupt nicht belegt (bis auf ein paar kb)
 
Interessanterweise ist die swap-partition bei manchen überhaupt nicht belegt (bis auf ein paar kb)

Ja das ist ja klar , der RAM wird zwar belegt aber nicht wirklich "genutzt" wie oben beschrieben. Deswegen muss die Swap Partition ja auch nicht genutzt werden.

MFG

Dennis
 
Code:
sono@solap:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           503        340        163          0         16        170
-/+ buffers/cache:        153        350
Swap:            0          0          0
sono@solap:~$

Na ja , würde mal behaupten wollen , dass jetzt nach dem starten des Computers heute morgen der Ram um einiges leerer erscheint.

Wenn ich mal zeit habe werde ich mir mal das buch reinziehen. Hört sich interessant an. Danke für den Tip

Gruß SOno
 
Ich weiß nicht was mache daran nicht verstehen oder als Verschwendung des Speichers sehen.
So schwer ist das doch nicht:

Der Arbeitsspeicher steht in erster Linie den geöffneten Programmen zur Verfügung.
Der unbenutze Speicher wird als Cache / Buffer benutzt, um das Verabeiten von Daten zu beschleunigen.
Sobald Bereiche dieses Speichers benötigt werden, werden diese frei gemacht.
Das Programm free -m gibt entsprechend Auskunft.
sono schrieb:
Dann muss ich also durchgehend meine CPU auf 100 % laufen lassen ?
Sonst hätte ich ja Geld verschwendet wenn wir der Logik folgen.
Das ist natürlich vollkommender Blödsinn.
Man kann Äpfel nicht mit Birnen vergleichen.
Den Unterschied und die daraus resultierenden Folgen solltest du bei genauerem überlegen selbst erkennen.
1. unnötig hoher Stromverbrauch
2. unnötig hohe CPU Temperatur
3. verlängerte Lade- / Verarbeitungszeiten
 
sono schrieb:
Na ja , würde mal behaupten wollen , dass jetzt nach dem starten des Computers heute morgen der Ram um einiges leerer erscheint.
Das ist auch ganz normal so. Denn Du bootest ja mit leerem Arbeitsspeicher. Ja länger der PC dann läuft, um so mehr steigt auch die Speicherauslastung. Besonders schön können das Programme verdeutlichen, die Dir die Auslastung anzeigen, wie z.B. gkrellm. Da kannst Du zusehen, wie sich jedes Programm beim Öffnen ein Stück RAM unter den Nagel reißt - und auch nach dem Schließen nicht ganz wieder hergibt. Hierbei unterscheidet gkrellm zwischen "genutzt", "Puffer", "Versteckt" und "roh (frei)".

Erst wenn der freie RAM aufgebraucht ist, beginnt Linux, den Swap zu nutzen. Je nach Größe des Speichers und nach gestarteten Progs und Diensten kann das bis zu mehreren Tagen dauern.

Gruß,
Ritschie
 
Erst wenn der freie RAM aufgebraucht ist, beginnt Linux, den Swap zu nutzen. Je nach Größe des Speichers und nach gestarteten Progs und Diensten kann das bis zu mehreren Tagen dauern.

Erst wird noch versucht RAM freizugeben.

MFG

Dennis
 
Also ...

jedes Programm bekommt genausoviel Speicher, wie es haben moechte (malloc!). Was darueber hinaus noch frei ist wird fuer's Filecaching verwendet. Dieser Speicher schaut fuer den Benutzer als "verbraucht" aus, ist in Wirklichkeit aber sofort verfuegbar. Ein winzig kleiner Teil des Speichers bleibt immer frei: daraus werden unmittelbare Memory-Requests bedient. Erst wenn dieser Puffer schwindet, wird er aus dem File-Cache wieder aufgefrischt.

Zu den Datenbanken: auch Oracle kann man auf ein paar MB laufen lassen. Man muss nur die Init-Parameter entsprechend anpassen. Die 160MB im Beispiel der MySQL DB sind vermutlich Buffer-Cache. Darin puffert die MySQL ihre Daten, um sie fuer wiederkehrende Requests schnell zur Verfuegung zu haben. Das hat nichts damit zu tun, was die DB braucht, sondern ist einfach nur ein Parameter aus dem Init-File.

Paging: Paging setzt ein, sobald der von Programmen verbrauchte Speicherplatz einen Schwellenwert (normalerweise irgendwo bei 80%) ueberschreitet. Ab dann wird gepaged. D.h. einzelne Speicherseiten werden ausgelagert. Wird ein 2. Schwellenwert ueberschritten, dann setzt Swapping ein: Linux lagert dann gesamte Prozesse aus. Darueberhinaus werden auch alle Prozesse ausgelagert, die laenger als 7sec inaktiv sind. Das passiert ganz egal welche Speichernutzung gerade ist.
 
THX für die einwandfreie Erklärung :)

MFG

Dennis
 
Zurück
Oben