Swap swappt nicht

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Swap swappt nicht

Beitrag von Striker666 » 10.11.2008 22:14:32

Hi @ll,

Code: Alles auswählen

Mem:   2068704k total,  1992272k used,    76432k free,   121660k buffers
Swap:  4650676k total,        8k used,  4650668k free,  1649420k cached
Irgendwie will mein Debian (etch) nicht richtig swappen.

Klar "Warum soll debian swappen wenn es nichts zum swappen gibt?"

Aber ein

Code: Alles auswählen

for i in `find * /etc`; do echo "i"; done;
hat den Ram bis auf 5MB voll gefressen und der swap lag trotzdem bei 0k *arg*

Kann ich irgendwie erzwingen, das dieser mehr swappen soll? Oder überhaupt swappen soll?

Weil mein RAM frisst sich dadurch immer voll und dadurch ist mein Server immer richtig larm. (Vim brauch schon 5 Sekunden zum laden) und mir bleibt nur ein reboot -.-*

Code: Alles auswählen

simon:/tmp# sysctl vm.swappiness
vm.swappiness = 80


simon:/tmp# swapon -s
Filename				Type		Size	Used	Priority
/dev/sda5                               partition	2650684	4	-5
/tmp/swapfile                           file		1999992	4	-4


simon:/tmp# free -m
             total       used       free     shared    buffers     cached
Mem:          2020       1945         74          0        119       1610
-/+ buffers/cache:        215       1804
Swap:         4541          0       4541

Ich bin ratlos. Ich hoffe jemand kann mir helfen :(
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Swap swappt nicht

Beitrag von Spasswolf » 10.11.2008 22:26:00

Frisst dieser Befehl

Code: Alles auswählen

for i in `find * /etc`; do echo "$i"; done;
wirklich, ernsthaft viel Ram bei dir?
Liegt es eventuell am io_wait, dass vim so langsam startet (wa in top)?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Swap swappt nicht

Beitrag von rendegast » 11.11.2008 06:51:28

Striker666 hat geschrieben:Kann ich irgendwie erzwingen, das dieser mehr swappen soll? Oder überhaupt swappen soll?

Code: Alles auswählen

mount | grep tmpfs          # zeigt im Speicher liegende Dateisysteme

# und dann zum Beispiel:
dd if=/dev/zero of=/dev/shm/NULL

# Ein tmpfs (RAM-Disk) erzeugen, standardmäßig bis halbe RAM-Größe
mkdir /tmp/TMPFS
mount -t tmpfs tmpfs /tmp/TMPFS
dd if=/dev/zero of=/tmp/TMPFS/NULL
Weil mein RAM frisst sich dadurch immer voll und dadurch ist mein Server immer richtig larm.

Code: Alles auswählen

... 1649420k cached
Das sieht eigentlich bestens aus, der größte Teil der 2GB wird zum cachen verwendet. So soll es sein, und dadurch wird der Server eigentlich erst "schnell".
Brauchen Programme mehr Speicher, so wird erst der Teil des cachenden RAM verkleinert bevor zum Swappen übergegangen wird.

(Vim brauch schon 5 Sekunden zum laden) und mir bleibt nur ein reboot -.-*
Große gefüllte Festplatten könnten vielleicht diese Verzögerung hervorrufen, aber nach dem Erststart von vim liegen dessen Dateien im Cache-RAM, und ein Start danach sollte sehr schnell geschehen.

Sind die Platten auch im schnellen DMA-Modus? bzw. stimmen SCSI-Einstellungen/SCSI-IDs? Keine defekten Kabel?

Code: Alles auswählen

hdparm -tT /dev/...
(aber auch dann sollte nach dem Erststart ein weiterer Start sehr schnell gehen.)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Re: Swap swappt nicht

Beitrag von Striker666 » 11.11.2008 17:33:53

Spasswolf hat geschrieben:Frisst dieser Befehl

Code: Alles auswählen

for i in `find * /etc`; do echo "$i"; done;
wirklich, ernsthaft viel Ram bei dir?
Liegt es eventuell am io_wait, dass vim so langsam startet (wa in top)?
Ups hab die falsche Zeile kopiert gehabt :D

find * /

sollte es heissen ;)

ich hatte noch ca. 70mb Ram frei und da hat der alles gefressen
rendegast hat geschrieben:
Striker666 hat geschrieben:Kann ich irgendwie erzwingen, das dieser mehr swappen soll? Oder überhaupt swappen soll?

Code: Alles auswählen

mount | grep tmpfs          # zeigt im Speicher liegende Dateisysteme

# und dann zum Beispiel:
dd if=/dev/zero of=/dev/shm/NULL

# Ein tmpfs (RAM-Disk) erzeugen, standardmäßig bis halbe RAM-Größe
mkdir /tmp/TMPFS
mount -t tmpfs tmpfs /tmp/TMPFS
dd if=/dev/zero of=/tmp/TMPFS/NULL
Schon ausprobiert, dann hat der lediglich 38k geswappt
Weil mein RAM frisst sich dadurch immer voll und dadurch ist mein Server immer richtig larm.

Code: Alles auswählen

... 1649420k cached
Das sieht eigentlich bestens aus, der größte Teil der 2GB wird zum cachen verwendet. So soll es sein, und dadurch wird der Server eigentlich erst "schnell".
Brauchen Programme mehr Speicher, so wird erst der Teil des cachenden RAM verkleinert bevor zum Swappen übergegangen wird.
So sollte es sein ;)

Aber auch wenn der Ram voll ist fängt er nicht an zu swappen oder mir Speicher frei zu geben *arg*

Kann ich den Cache leeren? oder ggf. sagen das er nicht so viel cachen soll sondern das swappen priorisiert? ~.~
(Vim brauch schon 5 Sekunden zum laden) und mir bleibt nur ein reboot -.-*
Große gefüllte Festplatten könnten vielleicht diese Verzögerung hervorrufen, aber nach dem Erststart von vim liegen dessen Dateien im Cache-RAM, und ein Start danach sollte sehr schnell geschehen.

Sind die Platten auch im schnellen DMA-Modus? bzw. stimmen SCSI-Einstellungen/SCSI-IDs? Keine defekten Kabel?

Code: Alles auswählen

hdparm -tT /dev/...
(aber auch dann sollte nach dem Erststart ein weiterer Start sehr schnell gehen.)

Code: Alles auswählen

# hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   1704 MB in  2.00 seconds = 851.55 MB/sec
 Timing buffered disk reads:  174 MB in  3.02 seconds =  57.66 MB/sec

# hdparm -I /dev/sda
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 udma7

Sollte in Ordnung sein

Syslog habe ich noch folgendes gefunden:
Unable to find swap-space signature
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: Swap swappt nicht

Beitrag von cirrussc » 11.11.2008 18:05:14

Hi, du kannst die "swappiness" des Kernels beeinflussen, unter /proc/sys/vm/swap/swappiness [1].

[1] http://www.thomashertweck.de/linuxram.html
Zuletzt geändert von cirrussc am 20.12.2008 02:37:53, insgesamt 1-mal geändert.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Swap swappt nicht

Beitrag von rendegast » 11.11.2008 20:07:56

Schon ausprobiert, dann hat der lediglich 38k geswappt
Natürlich passiert das, Du solltest ja auch eine zweite RAM-Disk anlegen, denn 2 * 1/2 = 1 ;)
(Vim brauch schon 5 Sekunden zum laden)
Das hat andere Ursachen, garantiert nicht ein "nicht-swappendes" Linux.

Code: Alles auswählen

Mem:   2068704k total,  1992272k used,    76432k free,   121660k buffers
Swap:  4650676k total,        8k used,  4650668k free,  1649420k cached
Dieser Zustand ist bestens, selbst wenn
hat den Ram bis auf 5MB voll gefressen
wird bei weiter benötigtem RAM sofort aus dem Datei-Cache ("cached") freigegeben.
Der für Programme verwendbare Speicher ist also eher "free" + "cached".
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Swap swappt nicht

Beitrag von Spasswolf » 11.11.2008 20:23:50

So jetzt hab ich das mal ausprobiert:

Code: Alles auswählen

for i in `find /`; do echo "$i"; done;
Frisst auch nicht besonders viel Ram (13,5% bei 2G), aber nachdem es durchgelaufen ist, gibt die bash den Speicher nicht wieder frei. Scheint der gleiche Bug zu sein wie hier:
https://bugs.launchpad.net/ubuntu/+sour ... +bug/82123

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Swap swappt nicht

Beitrag von rendegast » 12.11.2008 01:11:04

Und hier:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=263024

Ein walkaround steht dabei:

Code: Alles auswählen

for i in `find * /etc`; do echo "i"; done;

-->
for i in $(find * /etc); do echo "i"; done;
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Swap swappt nicht

Beitrag von Spasswolf » 12.11.2008 10:27:21

Der Walkaround funktioniert bei mir nicht

Code: Alles auswählen

for i in $(find * /); do echo "$i"; done;
Die bash behält den Speicher trotzdem.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Swap swappt nicht

Beitrag von rendegast » 12.11.2008 15:05:39

Spasswolf hat geschrieben:Die bash behält den Speicher trotzdem.
Yepp, nach einem zweiten Durchlauf steigt der RES nochmal etwas 211MB -> 275MB,
bleibt dann aber nach weiteren Läufen dabei.
Das paßt zu der Aussage, daß es sich um eine Art Cache der bash handelt?

Ein vom User gesetztes 'ulimit -m ...' begrenzt das nicht.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Re: Swap swappt nicht

Beitrag von Striker666 » 12.11.2008 23:03:26

cirrussc hat geschrieben:Hi, du kannst die "swappiness" des Kernels beeinflussen, unter /proc/vm/swap/swappiness [1].

[1] http://www.thomashertweck.de/linuxram.html

Das selbe macht auch

Code: Alles auswählen

sysctl vm.swappiness=60
Spasswolf hat geschrieben:So jetzt hab ich das mal ausprobiert:

Code: Alles auswählen

for i in `find /`; do echo "$i"; done;
Frisst auch nicht besonders viel Ram (13,5% bei 2G), aber nachdem es durchgelaufen ist, gibt die bash den Speicher nicht wieder frei. Scheint der gleiche Bug zu sein wie hier:
https://bugs.launchpad.net/ubuntu/+sour ... +bug/82123
Das sollte auch nur zeigen, das der Ram bei weniger als 5mb immer noch nicht swappt.

Ich hatte nur noch 50MB Frei ca. dann hab ich diese Schleife genutzt um den Ram noch mehr zu befüllen. Beim 2. Versuch hat er es gecached. Was auch in Ordnung ist.

Und was mich nervt ist, das er den schnellen Ram nimmt um sachen zu cachen von alten Programmen (Tests, System überwachungs Programme, Diagnose Programme) und damit den schnellen Ram belegt und dann bei fast völliger überfülltheit nicht mal etwas in den swap schreibt.

Bei laufenden Programmen okay ist ja sinnig. Aber Programme die ich seit 24h nicht gestartet habe, haben nichts mehr im Cache verloren. Und dieser wird nur minimal geleert.

Ein webserver mit einem apache 2 vhosts, mysql (atm noch Testserver) sollte nicht 1,5GB Cache gebrauchen :x

Bei meinen anderen Servern ist es so, das er ca. 100mb Swap (in etwa) voll hat und parallel dazu um die 60mb Ram (in etwa). (E-Mail Server und Webserver) (ebenso bei meinen 2 Arbeits PC's)

rendegast hat geschrieben:
Schon ausprobiert, dann hat der lediglich 38k geswappt
Natürlich passiert das, Du solltest ja auch eine zweite RAM-Disk anlegen, denn 2 * 1/2 = 1 ;)
Also ich habe nun 2 Ram-Disk erstellt (mit jeweils dem dd) und dieser hat nur dne Swap voll gehauen. Aber mit den Dateien die ich in die Datei NULL gemacht habe. (Durch den dd)

Entweder versteh ich das noch nicht ganz oder ich seh nicht den sin darinne weitere Ram-Disk's anzulegen und diese dann voll zu machen (und somit auch den swap) o.O

Bitte um erklärung ^^


Und schoneinmal danke an alle für die Hilfe :)
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Swap swappt nicht

Beitrag von Spasswolf » 12.11.2008 23:37:09

Trotzdem sollte der Rechner nicht swappen, sondern den cache freigeben. Welchen Wert hast du denn in /proc/sys/vm/vfs_cache_pressure?

Edit: Hier einige Einstellungen zur Speicherverwaltung:
http://www.linuxinsight.com/proc_sys_vm_hierarchy.html

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Re: Swap swappt nicht

Beitrag von Striker666 » 13.11.2008 18:47:33

Spasswolf hat geschrieben:Trotzdem sollte der Rechner nicht swappen, sondern den cache freigeben. Welchen Wert hast du denn in /proc/sys/vm/vfs_cache_pressure?

Edit: Hier einige Einstellungen zur Speicherverwaltung:
http://www.linuxinsight.com/proc_sys_vm_hierarchy.html
100

Er swappt nun mittlerweile 2000k aber mal schauen wie es weiter geht....


Vielen Dank aufjedenfall an alle :) mal schauen wie sich der Server weiterhin verhält.
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

Antworten