Forum: PC Hard- und Software Speichermanagement Linux


von C3 (Gast)


Lesenswert?

Nachdem ich nach vielen Jahren mal wieder Linux installiert habe, bin 
ich nun extrem beeindruckt, was sich da alles getan hat. Sogar meine 
Windows-Software läuft komplett unter Wine. Ich denke stark darüber nach 
vollständig umzusteigen.

Ein Sache macht mir aber Kopfzerbrechen. Probeweise habe ich Xubuntu auf 
einem alten T60-Laptop (1GB RAM) installiert und das Gerät ist auffällig 
langsamer als unter Windows 7. Das kann ja eigentlich gar nicht sein, 
dachte ich mir. Wenn etwas zusammen-gepatchtes schneller ist als Linux, 
dann stimmt da was nicht. Also habe ich mal in den Tasks und dem 
Speichermonitor herum gestöbert. Am Ende habe ich Testweise die 
Swap-Datei aus der fstab entfernt und eine RAM-Disk eingehängt. Auch bei 
hoher Belastung ist das System jetzt verdammt schnell. Der Flaschenhals 
ist wohl die kleine 60GB-Sata-Festplatte. Aber wieso wird den eigentlich 
geswappt, obwohl der RAM noch gar nicht vollständig in Anspruch genommen 
wurde. Es scheint mir, als ob das Speichermanagement von Linux 
verbesserungsbedürftig ist. Oder muss ich mir einen eigenen Kernel 
basteln, damit das besser wird. Mit der RAM-Disk kann ich zwar leben, 
aber ich würde gerne wissen, ob meine Vermutung richtig ist, oder ob ich 
irgendetwas falsch gemacht/nicht gut installiert habe.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

C3 schrieb:
> Am Ende habe ich Testweise die
> Swap-Datei aus der fstab entfernt und eine RAM-Disk eingehängt

Hä? Man kann auch SWAP einfach deaktivieren. Bei SATA mal darauf 
geachtet ob das nicht im IDE Modus läuft?

von C3 (Gast)


Lesenswert?

Läubi .. schrieb:
> C3 schrieb:
>> Am Ende habe ich Testweise die
>> Swap-Datei aus der fstab entfernt und eine RAM-Disk eingehängt
>
> Hä? Man kann auch SWAP einfach deaktivieren. Bei SATA mal darauf
> geachtet ob das nicht im IDE Modus läuft?

Hallo,

Nein, man kann die Swap-Datei nicht einfach deaktivieren. Ich habe das 
einhängen aus der fstab entfernt und dann neu ohne swap-Partition 
gebootet. Dann habe ich eine RAM-Disk angelegt und diese mit mkswap und 
swapon eingehängt.

Die SATA-Platte läuft nicht im Ide-Modus. Das habe ich mit hdparm 
geprüft.

von Rolf M. (rmagnus)


Lesenswert?

Läubi .. schrieb:
> Hä? Man kann auch SWAP einfach deaktivieren.

Ja. Das Tool dafür heißt passenderweise swapoff.

C3 schrieb:
> Aber wieso wird den eigentlich geswappt, obwohl der RAM noch gar nicht
> vollständig in Anspruch genommen wurde. Es scheint mir, als ob das
> Speichermanagement von Linux verbesserungsbedürftig ist.

Solches Verhalten kenne ich eher von Windows. Das swapt schon, wenn noch 
90% des RAM unbenutzt sind, zumindest bei XP.
Was sagt denn top zur Speichernutzung?

> Oder muss ich mir einen eigenen Kernel basteln, damit das besser wird.

Warum sollte das was bringen?  Meinst du, die Standardkernel der 
Distributionen sind extra so konfiguriert, daß sie möglichst langsam 
sind?

> Mit der RAM-Disk kann ich zwar leben, aber ich würde gerne wissen, ob meine
> Vermutung richtig ist, oder ob ich irgendetwas falsch gemacht/nicht gut
> installiert habe.

Warum hast du eine RAM-Disk überhaupt erzeugt? In welchem Zusammenhang 
steht die zu dem ganzen Problem?

von Norbert (Gast)


Lesenswert?

Zuerst swap wieder aktivieren!
Dann (arbeiten...) und mal zB. mit 'top' oder 'htop' überprüfen ob (und 
wieviel) 'swapspace' genutzt wird.

Dann gibt's da so etwas Wunderbares wie
1
cat /proc/sys/vm/swappiness
Das liefert wahrscheinlich den default 60.
Nun (als root):
1
echo 0 > /proc/sys/vm/swappiness
ausführen. Das legt dem System nahe, nur dann den 'swapspace' zu Nutzen 
wenn's unbedingt nötig ist.

von C3 (Gast)


Lesenswert?

Rolf Magnus schrieb:
> Ja. Das Tool dafür heißt passenderweise swapoff.

Naja, Läubi hat schon recht. Swapoff geht nicht, wenn die Swap-Partition 
bereits Daten serviert. Deshalb musst ich booten. Vielleicht gibt es da 
auch einen Trick?

von Norbert (Gast)


Lesenswert?

C3 schrieb:
> Nein, man kann die Swap-Datei nicht einfach deaktivieren.

Doch, kann man. Aber nur als 'root'
1
swapoff -a
 schaltet alles was nach swap aussieht mitten im Betrieb ab.
Das passende Gegenstück heist:
1
swapon -a

von C3 (Gast)


Lesenswert?

Norbert schrieb:
> Zuerst swap wieder aktivieren!

Swap ist aktiv, aber mit einer RAM-Disk. Heisst bei mir z.B.
swapon /dev/ram0

von Norbert (Gast)


Lesenswert?

C3 schrieb:
> Swapoff geht nicht, wenn die Swap-Partition
> bereits Daten serviert.
1
swapoff -a
 'synced' zuerst dirty pages auf die Festplatte und schaltet dann swap 
ab. Definitiv!

von Peter II (Gast)


Lesenswert?

warum sollte  man ram in den ram swappen das macht nun überhaupt keinen 
sinn. Entweder ohne swapfile oder mit aber doch nicht in eine Ramdisk.

von C3 (Gast)


Lesenswert?

Norbert schrieb:
> 'synced' zuerst dirty pages auf die Festplatte und schaltet dann swap
> ab. Definitiv!

ok. Danke. Ich probiere Deinen Hinweis bezüglich swappiness aus.

von Norbert (Gast)


Lesenswert?

C3 schrieb:
> Swap ist aktiv, aber mit einer RAM-Disk. Heisst bei mir z.B.
> swapon /dev/ram0

Mach das besser wieder rückgängig und auf die Festplatte.
Swap im RAM war, ist und wird immer unsinnig bleiben. (*)
Linux verwaltet den verfügbaren Speicher so gut es geht.
Man kann dem System mit swapiness die eigenen Wünsche mitteilen.



* Warum sollte man etwas vom Arbeitsspeicher(RAM) ins Swapspace(RAM) 
auslagern?

von Lukas K. (carrotindustries)


Lesenswert?

Was soll der Swap in der Ramdisk? Mehr Hauptspeicher gibt's dadurch auch 
nicht. Wenn man die Hauptspeicherauslastung im Auge behält, arbeitet 
sich's auch ohne swap flott. Xfce ist ja nicht allzu speicherfressend.

zu: hülfe! linux hat meinen Hauptspeicher gefressen: 
http://www.linuxatemyram.com/

von C3 (Gast)


Lesenswert?

Norbert schrieb:
> Linux verwaltet den verfügbaren Speicher so gut es geht.

Offenbar nicht gut genug, wenn man so einen Unsinn machen muss.

Mir ist klar, dass es nicht logisch ist, eine RAM-Disk als SWAP-Datei zu 
verwenden. Deshalb habe ich diese Frage ja hier gestellt. Offenbar ist 
es Unsinn, aber das Ergebnis ist erstmal gut.

von Norbert (Gast)


Lesenswert?

C3 schrieb:
> Offenbar nicht gut genug, wenn man so einen Unsinn machen muss.
>
> Mir ist klar, dass es nicht logisch ist, eine RAM-Disk als SWAP-Datei zu
> verwenden. Deshalb habe ich diese Frage ja hier gestellt. Offenbar ist
> es Unsinn, aber das Ergebnis ist erstmal gut.

Das scheint nur so. Die Speicherverwaltung ist ungleich komplexer als 
nur einfaches ein- und auslagern von pages wenn das RAM zur Neige geht.
1
$ cat /proc/meminfo 
2
MemTotal:        3802844 kB
3
MemFree:         1368848 kB
4
Buffers:          109420 kB <<---
5
Cached:          1346564 kB <<---
6
SwapCached:            0 kB
7
Active:          1344236 kB
8
Inactive:         891680 kB
9
Active(anon):     809828 kB
10
Inactive(anon):    36432 kB
11
Active(file):     534408 kB
12
Inactive(file):   855248 kB
13
Unevictable:          36 kB
14
Mlocked:              36 kB
15
SwapTotal:       4192248 kB
16
SwapFree:        4192248 kB
17
Dirty:               184 kB
18
Writeback:             0 kB
19
AnonPages:        780116 kB
20
Mapped:           142668 kB
21
Shmem:             66328 kB
22
Slab:             118408 kB
23
SReclaimable:      98504 kB
24
SUnreclaim:        19904 kB
25
KernelStack:        2912 kB
26
PageTables:        27624 kB
27
NFS_Unstable:          0 kB
28
Bounce:                0 kB
29
WritebackTmp:          0 kB
30
CommitLimit:     6093668 kB
31
Committed_AS:    2082812 kB
32
VmallocTotal:   34359738367 kB
33
VmallocUsed:      316824 kB
34
VmallocChunk:   34359404028 kB
35
HardwareCorrupted:     0 kB
36
HugePages_Total:       0
37
HugePages_Free:        0
38
HugePages_Rsvd:        0
39
HugePages_Surp:        0
40
Hugepagesize:       2048 kB
41
DirectMap4k:      216640 kB
42
DirectMap2M:     2666496 kB
43
DirectMap1G:     1048576 kB
und das ist nur ein einfaches Desktopsystem ;-)

Es ist zB. sinnvoll einen Teil des RAMs für das caching der Dateisysteme 
zu verwenden, da die wichtigen Bereiche 'bitmaps/inodes/extends' über 
die Platte verteilt sind. Nachfolgende Operationen werden dadurch extrem 
beschleunigt. Da kann man dan ruhig mal bestimmte Bereiche des von 
Programmen allokierten aber nicht genutzten Speichers auslagern und hat 
trotzdem alles in allem eine bessere Geschwindigkeit.

Swapspace jedoch auf jeden Fall aktiviert lassen (wenn mal ein Programm 
große Mengen an Speicher anfordert).
Ansonsten kommt der OOM Killer ;-)

von Salewski (Gast)


Lesenswert?

>Ein Sache macht mir aber Kopfzerbrechen.

1GB RAM ist heute ja auch recht wenig, dafür mögen die Voreinstelllungen 
nicht optimal sein. Swap sollte natürlich stets ein separates Medium 
sein, anderenfalls kann es passieren, dass der Kopf der Festplatte 
dauernd hin- und her fährt. Wenn man nur eine Festplatte und sonst kein 
schnelles Speichermedium zur Verfügung hat, ist es womöglich besser auf 
Swap zu verzichten, oder dessen Nutzung über den Parameter Swapiness 
stark zu limitieren:

http://wiki.ubuntuusers.de/Swap

von Norbert (Gast)


Lesenswert?

Salewski schrieb:
> 1GB RAM ist heute ja auch recht wenig, dafür mögen die Voreinstelllungen
> nicht optimal sein. Swap sollte natürlich stets ein separates Medium
> sein, anderenfalls kann es passieren, dass der Kopf der Festplatte
> dauernd hin- und her fährt. Wenn man nur eine Festplatte und sonst kein
> schnelles Speichermedium zur Verfügung hat, ist es womöglich besser auf
> Swap zu verzichten, oder dessen Nutzung über den Parameter Swapiness
> stark zu limitieren:

Ähm, ich hab' hier nur eine Platte und mein Swap wird nur angetastet 
wenn ich die virtuelle Memory-Sau rauslasse.
Bei unixoiden Systemen verzichtet man im Allgemeinen  nicht auf Swap, 
sonst kommt irgendwann - wenn man es gerade gar nicht braucht - der OOM 
Killer.

Was ist besser, Arbeitsdaten verlieren oder eine Minute mit einem 
langsamen System zu arbeiten?

von Lukas K. (carrotindustries)


Lesenswert?


von C3 (Gast)


Lesenswert?

hm...

Norbert schrieb:
> echo 0 > /proc/sys/vm/swappiness

hatte gravierende Folgen fuer Wine. Es laesst sich auch Reproduzieren. 
Nach diesem Kommando habe eine grosse Windows-Applikation ueber Wine 
gestartet. Die Festplatte war nur noch am Roedeln. Das ganze System war 
nicht mehr Ansprechbar. Nichtmal die Konsole konnte ich wechseln. Das 
passiert bei meiner RAM-Disk nicht. Die Kiste ist definitiv schneller 
mit einer RAM-Disk als Swap. Was soll ich sagen?

von Norbert (Gast)


Lesenswert?

Sehr komisch.
Ich habe hier auch ab und zu wine laufen und dieses Phänomen noch nie 
gesehen. Hier läuft allerdings ein Debian stable.

Dann müsste man ja mit
echo "60" >...
bzw.
echo "0" > ...

das Verhalten von wine jeweils beeinflussen können.
Läßt sich das Problem damit ein- und ausschalten?
Was macht ein
echo "1" > ...
in Verbindung mit wine

und vor allem was sagt htop?

von Salewski (Gast)


Lesenswert?

>Ähm, ich hab' hier nur eine Platte und mein Swap wird nur angetastet
>wenn ich die virtuelle Memory-Sau rauslasse.

Ich habe den Eindruck, dass mit aktuellen Kernels Swap sehr oft genutzt 
wird -- was ja in der Regel auch Sinn macht.

>Bei unixoiden Systemen verzichtet man im Allgemeinen  nicht auf Swap,
>sonst kommt irgendwann - wenn man es gerade gar nicht braucht - der OOM
>Killer.

>Was ist besser, Arbeitsdaten verlieren oder eine Minute mit einem
>langsamen System zu arbeiten?

Nun ja, aber ein permanentes hin- und herfahren des Festplattenkopfes 
macht natürlich wenig Sinn, daher hatte ja auf Swappiness hingewiesen.

Übrigens wurde bei mir bis vor ca. einem Jahr Swap so gut wie nie 
benutzt, bei 2 GB RAM. Jetzt deutlich mehr, aber ich habe Swap auf einer 
separaten schnellen Festplatte.

von Salewski (Gast)


Lesenswert?

>hatte gravierende Folgen fuer Wine.

Mit Verlaub -- Wine ist eh Schwachsinn, erst recht mit nur 1 GB RAM.

Wer Windows Programme will soll sich Windows kaufen und gut.

Wenn man mal ein kleines Windows-Programm nutzen muss, könnte man ja mal 
Wine probieren. Wenn es denn unbedingt sein muss.

von Rolf M. (rmagnus)


Lesenswert?

C3 schrieb:
> Norbert schrieb:
>> Linux verwaltet den verfügbaren Speicher so gut es geht.
>
> Offenbar nicht gut genug, wenn man so einen Unsinn machen muss.

"Man" muß so einen Unsinn nicht machen, zumindest habe ich noch nie 
davon gehört. Du scheinst der einzige zu sein, der das Problem in der 
Form hat.

> Mir ist klar, dass es nicht logisch ist, eine RAM-Disk als SWAP-Datei zu
> verwenden. Deshalb habe ich diese Frage ja hier gestellt. Offenbar ist
> es Unsinn, aber das Ergebnis ist erstmal gut.

Willst du damit behaupten, daß swap im RAM schneller ist, als gar kein 
swap? Das wäre extrem ungewöhnlich.

Salewski schrieb:
> Ich habe den Eindruck, dass mit aktuellen Kernels Swap sehr oft genutzt
> wird -- was ja in der Regel auch Sinn macht.

Macht es? Warum sollte viel geswappt werden, solange noch genug Speicher 
da ist? Das macht nur das System langsamer und läßt Speicher ungenutzt. 
Und wenn nicht genug Speicher da ist, gibt's keine andere Wahl mehr. 
Lediglich die Balance zwischen Swap und Festplattencache ließe sich 
variieren.

Salewski schrieb:
> Mit Verlaub -- Wine ist eh Schwachsinn, erst recht mit nur 1 GB RAM.

Warum?

> Wer Windows Programme will soll sich Windows kaufen und gut.

Es geht oft nicht darum, es zu wollen. Es gibt halt ein paar Programme 
leider nicht für Linux, und dann dauernd zwischen den beiden Systemen 
hin- und herzubooten ist erst recht Schwachsinn, wenn's auch anders 
geht.

von C3 (Gast)


Lesenswert?

Rolf Magnus schrieb:
> Willst du damit behaupten, daß swap im RAM schneller ist, als gar kein
> swap? Das wäre extrem ungewöhnlich.

Ach Rolf, warum liest Du denn nicht alles genau durch, bevor Du sowas 
schreibst?

Es geht nicht darum, dass es schneller ist, sondern das zu früh 
angefangen wird zu swappen. Und bei dem Trick mit der RAM-Disk spürt man 
das nicht so. Norbert hat die richtige Lösung genannt.

Nur, schaltet vermutlich
echo 0 > /proc/var/sys/swappiness
den swap ganz ab. Deshalb ist meine Kiste abgestürzt.

mit

echo 1 > /proc/var/sys/swappiness

funktioniert es super. Jetzt brauche ich die blöde RAM-Disk auch nicht 
mehr.

Danke dafür Norbert.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> Warum sollte viel geswappt werden, solange noch genug Speicher
> da ist? Das macht nur das System langsamer und läßt Speicher ungenutzt.

Beides hängt allerdings nicht zusammen.  Man kann durchaus schon
"prophylaktisch" anfangen, Seiten in den Swap auszulagern, damit
man bei beginnendem RAM-Mangel ggf. weiteren RAM innerhalb von
kurzer Zeit freischaufeln kann.  Nichtsdestotrotz zwingt einen ja
niemand, die bereits in den Swap kopierten Pages im RAM sofort als
ungültig zu erklären, d. h. der Speicher wird durchaus benutzt.
Falls nun in Zukunft diese Seite wieder benötigt wird, liegt sie
noch da (falls sie modifiziert wird dabei, muss man die Kopie im
Swap ungültig erklären), sollte dagegen die zukünftigen Nutzung
plötzlich viel RAM brauchen (weil jemand ein Eclipse startet ;-),
dann kann man den RAM sofort "recyclen" und muss nicht erst in diesem
Moment beginnen, Seiten auszulagern.

Hat aber natürlich nur Sinn, wenn die Platte schnell genug ist, als
dass das "prophylaktische" Kopieren der Page nicht gerade den Rest
des Systems bremst.  Gerade Notebook-Platten kommen aber schnell an
ihre Grenzen; die sind halt auf geringen Energieverbrauch optimiert,
nicht auf bestmöglichen Durchsatz (meine eigene Erfahrung).

Ob und inwiefern Linux sowas macht, weiß ich nicht, aber es wäre eine
mögliche Erklärung für das beobachtete Phänomen.

von Norbert (Gast)


Lesenswert?

C3 schrieb:
> Nur, schaltet vermutlich
> echo 0 > /proc/var/sys/swappiness
> den swap ganz ab. Deshalb ist meine Kiste abgestürzt.
>
> mit
>
> echo 1 > /proc/var/sys/swappiness
>
> funktioniert es super. Jetzt brauche ich die blöde RAM-Disk auch nicht
> mehr.

Prima, danke für die Rückmeldung.
Das Phänomen mit der swappiness=0 hatte ich - vermutlich aufgrund meines 
deutlich größeren RAMs - noch nicht beobachtet.
Swap wird nicht abgeschaltet aber anscheinend dermaßen rigoros 
zusammengestaucht, das noch nicht einmal Platz für die Dateisystem 
caches gelassen wird. Das würde auch die enorme Plattenaktivität 
erklären. Das System ist vermutlich nicht abgestürzt sondern war nur 
fürchterlich mit sich selbst beschäftigt. ;-)

Werde aber nun auch swappiness auf 1 setzen, just in case.

von Norbert (Gast)


Lesenswert?

Ach ja, noch 'ne kleine Zusatzinformation:
1
echo 1 > /proc/sys/vm/swappiness
wirkt nur bis zum nächsten Bootvorgang.

Permanent machen kann man die Einstellung in der
1
/etc/sysctl.conf

Der passende Eintrag lautet dann:
1
vm.swappiness = 1

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.