RAM leer, Kiste swappt

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
djcrackman
RSAC
Posts: 208
Joined: 2005-06-02 11:58

RAM leer, Kiste swappt

Post by djcrackman » 2006-12-04 17:08

Tja, ich habe hier ein recht amüsantes Phänomen:

Code: Select all

# free -m
             total       used       free     shared    buffers     cached
Mem:           500        131        369          0          0         34
-/+ buffers/cache:         96        404
Swap:         1953        167       1786

Code: Select all

# uptime
 17:03:06 up 48 days,  4:24,  1 user,  load average: 1.01, 1.61, 0.99

Code: Select all

# cat /proc/meminfo
MemTotal:       512808 kB
MemFree:        372016 kB
Buffers:           764 kB
Cached:          35588 kB
SwapCached:      23896 kB
Active:          86284 kB
Inactive:        36664 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       512808 kB
LowFree:        372016 kB
SwapTotal:     2000864 kB
SwapFree:      1829060 kB
Dirty:             368 kB
Writeback:           0 kB
Mapped:          84128 kB
Slab:            10664 kB
CommitLimit:   2257268 kB
Committed_AS:  3864388 kB
PageTables:       4388 kB
VmallocTotal:   507896 kB
VmallocUsed:      1716 kB
VmallocChunk:   505876 kB
Da ist doch was im Argen? Die Kiste ist ein quasi-Relikt:

Dell GX-150
Pentium III 1GHz
2x 256MB SD-RAM PC100

Code: Select all

# uname -a
Linux host 2.6.14-hardened-r8 #1 SMP PREEMPT Wed Jul 12 00:13:13 GMT 2006 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux
Irgendjemand eine fixe Idee?

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: RAM leer, Kiste swappt

Post by Roger Wilco » 2006-12-04 18:32

Code: Select all

sysctl vm.swappiness

djcrackman
RSAC
Posts: 208
Joined: 2005-06-02 11:58

Re: RAM leer, Kiste swappt

Post by djcrackman » 2006-12-04 18:42

Code: Select all

# sysctl vm.swappiness
vm.swappiness = 60
Ich mach mich mal schlau ... hab derzeit keinen Plan, was der Wert aussagt *shameonme*. Fakt ist: bis vor ein paar Wochen lief die Kiste normal, kein Kernel-Update oder ähnliches gemacht (ist ein frozen-state System).

// edit
Diese Einstellung kontrolliert, wie stark der Swapspeicher benutzt wird. Ein höherer Wert (maximal 100) bedeutet eine stärkere Nutzung des Swapspeichers. Das kann sich deutlich auf die Leistung eines Systems mit wenig Speicher auswirken, abhängig von Auslastung und anderen Faktoren.
Gut zu wissen, ergo dreh ich das mal gut runter? Kann mir jemand irgendeine Empfehlung für das System aussprechen? 0815 Setup: Apache 1.3, MySQL 5.0, Pure-FTPd. Kein MTA.

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: RAM leer, Kiste swappt

Post by daemotron » 2006-12-04 20:28

60 ist der Default-Wert. Mit niedrigeren Werten würde ich nur sehr vorsichtig experimentieren (und vor allem nicht auf einer produktiven Maschine :wink: )

djcrackman
RSAC
Posts: 208
Joined: 2005-06-02 11:58

Re: RAM leer, Kiste swappt

Post by djcrackman » 2006-12-04 20:44

@jfreund Keine Bange, ich bin nirgendwo gegen gelaufen ;).

Code: Select all

# free -m
             total       used       free     shared    buffers     cached
Mem:           500        184        315          0          1         51
-/+ buffers/cache:        132        368
Swap:         1953        100       1853
Und das mit swappiness 0 -> irgend jemand einen Vorschlag?

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: RAM leer, Kiste swappt

Post by lucki2 » 2006-12-05 00:50

Wenn es nicht trashed, würde ich es so beschreiben: Disk IO ist teuer.
Ausgeswapped werden Speicherseiten, wenn der Ram gebraucht wird und dann liegen die im swap und da liegen sie erstmal gut ... bis sie gebraucht werden oder kswapd aus seinem Tiefschlaf gerissen wird.
Sie zurück in den Ram zu holen, weil der frei wird, obwohl sie nicht gebraucht werden und sie, wenn ein anderer Prozess kommt, der Speicher braucht, wieder auszulagern kostet .... Selbst wenn sie gebraucht werden, werden ausgelagerte Seiten noch nicht unbedingt sofort aus dem Swap entfernt.

Das heißt: ich vermute, Du hast einige schlafende Prozesse, deren Speicher irgendwann, als mehr Speicher gebraucht wurde(z.B. booten, cron oder zeitweise mehr Last), ausgelagert wurde. Diese Prozesse machen entweder gar nichts oder forken lediglich hin und wieder Kinder, die Seiten zwar vielleicht laden, ihre Eltern aber deswegen nicht sterben.
Ein Teil von dem wird im Swap liegen:
Inactive: 36664 kB
(außer es trashed, aber dann würde imho der Ram anders aussehen)


Zu dem Wert von swappiness: der sagt aus, was der Kernel machen soll, wenn ihm der Speicher aus geht: Cache verkleinern oder inaktive Seiten auslagern. Tradeoff:
Wie es bei Dir aus sieht, ist es ganz gut, wenn er das auslagert: Du brauchst es gerade nicht und bei den Idle-Prozessen wahrscheinlich nicht die schnelle, spontane Reaktion wenn der Prozess irgendwann aufgeweckt wird. Der Ram ist damit frei um damit zu arbeiten - freie Resourcen, die der Ausführung Deiner laufenden Programme zu gute kommen .
Anders sieht es aus, wenn es z.B. um Reaktion einer Desktopapplikation geht. Die ist für eine Stunde idle und dann kommt der User und will weiterarbeiten. Wenn die ausgeswapped wurde(weil idle) braucht es das lesen von der Platte. Da liegt beispielsweise ein Fenster im Hintergrund. Der User macht etwas in einem anderen Fenster. Irgendwann will der User weiterarbeiten und im ersten Momment reagiert die Anwendung nicht schnell genug, weil sie von der Platte geholt werden muß.(der User merkt eine Verzögerung da besonders). In dem Falle kann es wünschenswert sein, daß die Applikation zwar insgesamt langsamer ist, weil Speicher schwieriger zu bekommen ist - aber reaktiver beim Wechsel zwischen den Applikationen.

Das kannst Du mit dem Wert einstellen. Kannst ja damit spielen, beobachten und sehen, ob Du irgendwo ein Quäntchen Geschwindigkeit rausholen kannst. Endlich würde ich mir nicht so viele Sorgen machen, solange Du nicht schnelle Reaktion von Webapps benötigt, wenn der Cron gerade läuft, der zum swap führt(hint: grep updatedb ).

djcrackman
RSAC
Posts: 208
Joined: 2005-06-02 11:58

Re: RAM leer, Kiste swappt

Post by djcrackman » 2006-12-05 07:57

@lucki2 Schön und gut, aber das widerspricht doch dem allseits heilig gesprochenen Speichermanagement. Der RAM ist nicht mal zur Hälfte genutzt und das Ding swappt -> bemerkbar wurde es als ein WBB Board auf dem Hobel im Testbetrieb um Ecken langsamer wurde ... wenn dann paar Leute drauf aktiv sind, dann ist die Geschichte wieder fix -> nur wie du selbst bemerkt hast: so etwas nervt.

Meine Setups mach ich eigentlich auf allen Kisten gleich -> auf anderen Kisten habe ich dieses Phänomen nicht. Das ganze macht fast den Eindruck, als ob die Kiste nur 256MB RAM verwenden kann *grübel* da steht wohl zum einen mal ein Speichertest an (habe ich bei dem Dell eh schon ewig nicht mehr gemacht) und zum anderen: Sollte der Kernel nicht den ganzen zur Verfügung stehenden Speicher in Beschlag nehmen? :roll:

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: RAM leer, Kiste swappt

Post by lucki2 » 2006-12-05 13:06

Sollte der Kernel nicht den ganzen zur Verfügung stehenden Speicher in Beschlag nehmen?
Er darf vor allem Speicher nicht vom swap zurück in den Ram einlagern, wenn er es nicht muß. Selbst wenn der Ram komplett leer ist: das bleibt auf der Platte.

Noch mehr vereinfacht: Einmal im swap, immer swap. Außer es gibt einen guter Grund daran etwas zu ändern. Leerer Ram ist überhaupt kein Grund(schon gar kein guter) - kswapd ist einer und Altersschwäche.

PS: Lass es so formulieren: Dein cat von /proc/meminfo sieht mir mehr danach aus, daß es noch genug idle Speicherseiten gibt, die ausgelagert werden könnten(aber nicht werden, weil genug Ram da ist), zum anderen aber 23MB die im swap liegen aus irgendwelchen Gründen wieder in den Ram geholt wurden(dabei aber zusätzlich im swap liegen bleiben) - Wann die geholt wurden steht auf einem anderen Blatt, aber die sind im Ram und im Swap. Ich glaube nicht daß Dein Performanceproblem daran liegt, daß der Kernel auslagert - höchstens einlesesn(aber das sieht auch nicht nach viel aus).

Dazu gibt es aber noch Diskmapped speicher. Das sind Sachen, die in Dateien stehen und bei Bedarf aus der Datei geholt werden und aus dem Ram gelöscht wenn der gebraucht wird(solange sich die Datei nicht ändert).