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.
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?
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.
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?
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
echo0>/proc/sys/vm/swappiness
ausführen. Das legt dem System nahe, nur dann den 'swapspace' zu Nutzen
wenn's unbedingt nötig ist.
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?
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.
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?
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/
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.
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 ;-)
>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
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?
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?
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?
>Ä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.
>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.
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.
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.
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.
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.