Warum ist swap eine partition und nicht eine Datei?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
wanne
Moderator
Beiträge: 7448
Registriert: 24.05.2010 12:39:42

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von wanne » 04.10.2016 02:17:32

logoft hat geschrieben:Die Swap sollte glaube ich nicht zu groß sein, weil sich der Vorteil dann zum Nachteilumkehrt. Je größer die Swap desto länger muß in der Swap gesucht werden.
Da wird nicht gesucht. Da wird zugegriffen. Ob an sektor 50 oder 500 ist da völlig Wurst.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von Lord_Carlos » 04.10.2016 07:48:04

MSfree hat geschrieben:
Lord_Carlos hat geschrieben:Ich bekomme meine 32GB raegelmassig mit Video Bearbeitung voll.
Ich glaube nicht, daß du mit Videobearbeitung wirklich das RAM voll macht. Da wird eher der Dateisystemcache viel RAM an sich reißen. Schau mal, was cat /proc/meminfo | grep MemAvailable von sich gibt.
Doch doch. Das ist Adobe After Effects. Jeder gerenderte Frame (von der vorschau) liegt unkomprimiert im ram. Bei 1440p ist das pi mal daumen 11mb pro Frame. Das ist damit die Effekte nicht immer neu berechnet werden muessen. Dazu wird auch noch auf der Festplatte gecache. Das heist bei einem kleinen 10 Minuten Video hat man gerne Ram voll und dann auch noch 100GB an Cache rumliegen :)

Irgendwie muss man seine Hardware ausgaben ja rechtfertigen :D

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von uname » 04.10.2016 09:08:08

Könntest du mal einen Test machen. Führe die Videobearbeitung mit und ohne Swap durch.
Ich könnnte mir vorstellen, dass das Programm bei deaktiviertem Swap dann direkt die Frames auf die Festplatte auslagert. Wie sieht es im Vergleich dann mit der Performance aus?

Generell zu Swap:
Ich halte Swap für unnötig bzw. sogar für eine Senkung der Performance, wenn geswappt wird wenn noch genug RAM da ist. Vor allem auf alten Rechnern mit langsamer Festplatte deaktiviere ich Swap, sofern 1 GB oder 2 GB RAM für Standardanwendungen (Web und Office) bereitstehen.

[1] https://en.wikipedia.org/wiki/Swappiness

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von Meillo » 04.10.2016 09:17:57

Hier gibt es einen Thread von mir von 2012, der die Frage nach der Notwendigkeit von Swap auch schon behandelt:

viewtopic.php?f=15&t=136481
Use ed once in a while!

wanne
Moderator
Beiträge: 7448
Registriert: 24.05.2010 12:39:42

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von wanne » 04.10.2016 10:28:14

uname hat geschrieben:Generell zu Swap:
Ich halte Swap für unnötig bzw. sogar für eine Senkung der Performance, wenn geswappt wird wenn noch genug RAM da ist. Vor allem auf alten Rechnern mit langsamer Festplatte deaktiviere ich Swap, sofern 1 GB oder 2 GB RAM für Standardanwendungen (Web und Office) bereitstehen.
Dass du und viele andere das glauben, ist alt bekannt. Dass alles rationale gegen dich spricht hoffentlich auch.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von Meillo » 04.10.2016 11:11:46

wanne hat geschrieben:
uname hat geschrieben:Generell zu Swap:
Ich halte Swap für unnötig bzw. sogar für eine Senkung der Performance, wenn geswappt wird wenn noch genug RAM da ist. Vor allem auf alten Rechnern mit langsamer Festplatte deaktiviere ich Swap, sofern 1 GB oder 2 GB RAM für Standardanwendungen (Web und Office) bereitstehen.
Dass du und viele andere das glauben, ist alt bekannt. Dass alles rationale gegen dich spricht hoffentlich auch.
Meinst du damit die Verlangsamung der Performance oder die Notwendigkeit von Swap?

Eine schlechtere Zeitperformance durch das Vorhandensein von Swap halte ich fuer nicht vorhanden oder nicht relevant. Dass geswappt wird, wenn noch genug RAM vorhanden ist, kann wohl nur an einer Fehlkonfiguration liegen.

Wenn aber auf einem System ueber Jahre kein Swapspace genutzt wurde, dann tue ich mir schwer, seinen Notwendigkeit *auf diesem System* zu sehen.

Generelle Aussagen wuerde ich nicht treffen; ich sehe vielmehr Gruende fuer Swap auf manchen Systemen und gegen Swap auf anderen.
Use ed once in a while!

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von MSfree » 04.10.2016 11:51:58

Meillo hat geschrieben:Eine schlechtere Zeitperformance durch das Vorhandensein von Swap halte ich fuer nicht vorhanden oder nicht relevant.
Schon klar, solange Swap zwar vorhanden, jedoch nicht genutzt wird, bringt es so gut wie keine Nachteile.
Dass geswappt wird, wenn noch genug RAM vorhanden ist, kann wohl nur an einer Fehlkonfiguration liegen.
Diese Fehlkonfiguration ist aber schon mit der Installation des Systems vorhanden, und vielen Anwendern ist nicht bekannt, wie man das ändert. Der Parameter lautet /proc/sys/vm/swappiness und der kann zwischen Null (nutze Swap nur im äussersten Notfall) und 100 (bevorzuge Cache und Buffers, egal wie viel geswapt wird) variiert werden. Der Default ist 60, so daß hier eine leichte Bevorzugung von Cache/Buffers vs. Swap entsteht. Meiner Erfahrung nach sollte der Wert zwischen Null und Fünf eingestellt werden.
Generelle Aussagen wuerde ich nicht treffen; ich sehe vielmehr Gruende fuer Swap auf manchen Systemen und gegen Swap auf anderen.
Der Idealfall ist immer, genug RAM zu haben, dann kann man auf Swap schlicht verzichten. Systeme, die ständig an der RAM-Grenze operieren, sind unterdimensioniert. Hier Swap statt mehr RAM einzurichten, ist der falsche Weg. Swap ist immer eine Notlösung, die bedingt durch ihre Latenz und Datenrate um den Faktor 1000 langsamer als RAM ist. Selbst kurze Lastspitzen werden durch den Faktor 1000 zu sehr langwierigen Auslagerungsorgien, die bis hin zum Denial of Service führen können.

DeletedUserReAsG

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von DeletedUserReAsG » 04.10.2016 11:55:19

Ich halte Swap für unnötig bzw. sogar für eine Senkung der Performance, wenn geswappt wird wenn noch genug RAM da ist.
Ich hingegen nicht. Ich habe zumindest auf‘m T400 mit 2GB RAM häufiger Kontakt mit dem OOM-Killer (oder oom_reaper, wie er sich ja neuerdings nennt), wenn ich mal vergesse, Swap einzuhängen, bevor ich eine größere Textur in Blender lade, Firefox mit speicherlastigen Tabs und PyCharm (oder Javakram allgemein) gleichzeitig laufen lasse, größere Bilder bearbeite, OSM-Daten importiere, […].
Selbst kurze Lastspitzen werden durch den Faktor 1000 zu sehr langwierigen Auslagerungsorgien, die bis hin zum Denial of Service führen können.
Bei Servern stimme ich zu. Bei meinen lokalen Maschinen ist’s mir dann doch lieber, ’ne Minute zu warten bis es wieder ansprechbar ist, als die offenen Daten zu verlieren.

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von uname » 04.10.2016 15:43:27

Ich werde das Thema noch mal durchdenken. Dass Swapiness generell falsch eingestellt ist erklärt wohl meine Probleme auf alten Systemen. Was spricht denn dagegen Swap wirklich auf "0" zu stellen bzw. so, dass es im Notfall genutzt wird. Wo kann der Vorteil liegen, wenn statt RAM die langsame Platte genutzt wird? Leuchtet mir nicht wirklich ein. Oder ist die Speicherverwaltung zu träge bei 0 MB RAM frei noch zu swappen?

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von MSfree » 04.10.2016 16:13:10

uname hat geschrieben:Was spricht denn dagegen Swap wirklich auf "0" zu stellen, bzw. so, dass es im Notfall genutzt wird.
Eigentlich spricht nur mein Bauchgefühl dagegen, Swappiness auf Null zu setzen. Ein Bißchen Cache/Buffers sollte man dem System schon zugestehen, selbst wenn RAM durch Anwendungen belegt wird.
Wo kann der Vorteil liegen, wenn statt RAM die langsame Platte genutzt wird? Leuchtet mir nicht wirklich ein. Oder ist die Speicherverwaltung zu träge bei 0 MB RAM frei noch zu swappen?
Eigentlich sollte die Speicherverwaltung versuchen, Speicher zurück zu erobern, indem Cache und Buffers geopfert werden. Erst, wenn kein Cache mehr geopfert werden kann, sollte die Kiste in den Swap greifen. Von daher kann ich dir nur zustimmen. Allerdings ist gar kein Cache/Swap bei vollem Speicher auch kontraproduktiv, daher ja mein Erfahrungswert von 5.

Der Swappiness-Wert stellt im Prinzip eine Ballanceparameter dar, zwischen denen der Hauptspeicher für Cache/Buffers einerseits und Speicher für Anwendungen andereseits aufgeteilt werden soll. Anwendungen nutzen aber oft intern eigene Cachingmechanismen, so daß auf zusätzliches cachen durch das Betriebssystem verzichtet werden kann. Anwendungen können Daten viel spezialisierter cachen als ein Dateisystemcache. Bei einer Videobearbeitung ist das Cachen der MPEG-Daten durch das Betriebssystem ziemlich sinnlos, während das Cachen der dekomprimierten Frames durch die Verarbeitungssoftware sehr nützlich ist.

Benutzeravatar
whisper
Beiträge: 3156
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von whisper » 04.10.2016 16:14:33

MSfree hat geschrieben: Diese Fehlkonfiguration ist aber schon mit der Installation des Systems vorhanden, und vielen Anwendern ist nicht bekannt, wie man das ändert. Der Parameter lautet /proc/sys/vm/swappiness und der kann zwischen Null (nutze Swap nur im äussersten Notfall) und 100 (bevorzuge Cache und Buffers, egal wie viel geswapt wird) variiert werden. Der Default ist 60, so daß hier eine leichte Bevorzugung von Cache/Buffers vs. Swap entsteht. Meiner Erfahrung nach sollte der Wert zwischen Null und Fünf eingestellt werden.
(..) Systeme, die ständig an der RAM-Grenze operieren, sind unterdimensioniert. Hier Swap statt mehr RAM einzurichten, ist der falsche Weg. Swap ist immer eine Notlösung, die bedingt durch ihre Latenz und Datenrate um den Faktor 1000 langsamer als RAM ist. Selbst kurze Lastspitzen werden durch den Faktor 1000 zu sehr langwierigen Auslagerungsorgien, die bis hin zum Denial of Service führen können.
Ich finde die 60 als genau richtigen Kompromiss.
Der Cache enthält ja u.a. die Pointer und Daten der geöffneten Files und wenn man sich vor Augen führt, dass ein simpler Editor wie gedit schon ca 137 Descriptoren geöffnet hat, kann ich mir gut vorstellen, dass das Auslagern diese Prozesses mit mit großen zeitlichen Einbußen statt finden würde, weil ja auch die gecachten Bereiche mit geswappt werden müssen.
Die swapiness von 60 verlagert momentan nicht benötigte Prozesse aus und hält möglichst die Filedescriptor intensiven (Cache-lastigen) Prozesse im Speicher.
Im Grenzbereich, Swapiness 0 ist einfach die Change höher, das es wenn doch geswappt werden muss, den falschen trifft.
Das Auslagern eines lange nicht benötigen Prozesses ist für das System im Vorübergehen zu bewältigen, es sei denn, es findet bereits anderweitiger heftiger I/O statt.
Evtl sind die Entscheidungen der swappiness auch noch komplexer, habe ich mir noch nicht im Quellcode angesehen, aber die Richtung wird so ein

TomL

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von TomL » 04.10.2016 16:27:31

MSfree hat geschrieben:Meiner Erfahrung nach sollte der Wert zwischen Null und Fünf eingestellt werden.
whisper hat geschrieben:Ich finde die 60 als genau richtigen Kompromiss.
Ist das nicht auch noch ein bisschen abhängig vom tatsächlich installierten RAM? Wie verändern sich eure Empfehlungen, wenn z.b. auf dem einen älteren Rechner nur 2 GB RAM installiert sind, auf einem anderen neueren 8 GB? Ich hätte jetzt die Idee, auf dem 2 GB-Rechner wäre vielleicht gemäß whispers Erklärung der Wert 60 die bessere Wahl, auf dem 8 GB Rechner jedoch MSFree's empfohlene 5. In meinem Desktop sind 8 GB installiert.... was ist da richtig bzw. die bessere Option?

Ich habe auf meinem PC mit 8 GB (nur Office, Internet und Multimedia) einfach mal den Wert 10 eingestellt und bin damit einer Wiki-Erklärung gefolgt, die sagt:
"Value 10 = This value is sometimes recommended to improve performance when sufficient memory exists in a system."

Benutzeravatar
whisper
Beiträge: 3156
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von whisper » 04.10.2016 16:36:43

TomL hat geschrieben: Ich habe auf meinem PC mit 8 GB (nur Office, Internet und Multimedia) einfach mal den Wert 10 eingestellt und bin damit einer Wiki-Erklärung gefolgt, die sagt:
"Value 10 = This value is sometimes recommended to improve performance when sufficient memory exists in a system."
Sicher, ist vom Anwendungsfall abhängig, den Wiki Artikel hatte ich jetzt nicht mehr gefunden, scheint ein guter Hinweis zu sein.
Da aber RAM nicht mehr viel kostet, habe ich in meinem neuen Laptop 16GB, da ist mir die Einstellung wurscht, swappt sowieso nicht, wenn, dann ist was anderes faul ;-)

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von MSfree » 04.10.2016 17:33:27

TomL hat geschrieben:Ist das nicht auch noch ein bisschen abhängig vom tatsächlich installierten RAM? Wie verändern sich eure Empfehlungen, wenn z.b. auf dem einen älteren Rechner nur 2 GB RAM installiert sind, auf einem anderen neueren 8 GB?
Meiner Erfahrung nach sollte der Wert umso kleiner sein je weniger RAM im Rechner steckt. Für Cache und Buffer wird sowieso der freie Speicher genutzt. Es sollte aber der Cache geopfert werden, bevor geswapt wird. Da das bei wenig RAM sogar noch wichtiger ist als bei viel RAM, sollte bei wenig RAM der Wert sogar noch kleiner eingestellt werden als bei viel RAM.

Vor allem ältere Rechner mit langsameren Platten und wenig RAM profitieren davon, wenn sie möglichst wenig swappen und das erreicht man, in dem man Swappiness möglichst klein wählt.

Nunja, mit 8GB RAM fahre ich sowieso ohne Swap.

wanne
Moderator
Beiträge: 7448
Registriert: 24.05.2010 12:39:42

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von wanne » 04.10.2016 23:11:58

uname hat geschrieben:Was spricht denn dagegen Swap wirklich auf "0" zu stellen bzw. so, dass es im Notfall genutzt wird.
Dass dein Firefox zig mal in der Sekunde auf .mozilla/firefox/profil/content-prefs.sqlite/cookies.sqlite... zugreift aber deinen KDM sieht du nur je ein mal bei an- und abmeldung.
setzt du swappiness auf 0 ist dein KDM wunderbar schnell, weil der voll im RAM liegt und dein Firefox bei wenig RAM nicht zu bedienen weil, der massiv Dateizugriffe macht und praktisch keine Daten im vmem hält.
Ein Verhalten, dass du eher nicht haben willst.
MSfree hat geschrieben:Vor allem ältere Rechner mit langsameren Platten und wenig RAM profitieren davon, wenn sie möglichst wenig swappen und das erreicht man, in dem man Swappiness möglichst klein wählt.
Quatsch gerade die bremst du dadurch massiv aus. Deine Hintergrunddienst fressen dir den ganzen Speicher weg und Firefox und co. sind nicht mehr zu bedienen. Kannst du wunderbar mal mit einem Rechner (keine VM) mit ~256MiB RAM ausprobieren. Mit swappiness=0 ist das einfach gar nicht mehr zu benutzen. Dein Swap wird trotzdem nicht angefasst.

Swappiness sagt nichts darüber aus wieviele Daten ausgelaggert werden sondern welche. – Kleine swappiness und der dateisystemcache wird bevorzugt auf die platte gedumpt – große swappiness und der vmem wird bevorzugt in den swap gedumpt. Beides mal muss das bei der nächsten Nutzung erst wieder von der lahmen platte geladen werden. Ist wirklich genug Speicher da wird auch nichts irgendwo hin verteilt sondern alles im RAM behalten.

Entsprechend ist die swappiness auch eher Nutzungsabhänig als Hardwareabhängig:
Hast du Programme, die erstmal alles in den vmem laden (Die meisten grafischen Programme, Bildbearbeitungsprogramme….) willst du ne kleine swappines, hast du Programme die sehr viel IO mit den selben Dateien machen (Die meisten Server Programme vor allem Webserver aber auch Firefox.) willst du eine große.

Insbesondere nimmst du da eine ungewollte Priorisierung vor.
Das ist bevorzugt bei kleiner swappiness.

Code: Alles auswählen

char a;
char buff[1073741824];
read(fd,buff,1073741824);
while(bla)
  a=buff[$random]
Das bei sehr großer:

Code: Alles auswählen

char a;
while(bla){
  fseek(file,$random,SEEK_SET);
  fread(&a,1,1,file);
}

Viele Programme optimieren darauf häufige Daten in den vmem zu laden und weniger häufige in Dateien (/tmp) auszulagern. Entsprechend laufen sie dann schneller mit kleiner swappines.
Mittlerweile geht der Trend aber wieder rückwärts. Man will, dass die Programme auch nach abstürzten noch möglichst stabil laufen und stellt möglichst schnell möglichst alles auf die Platte und syct dann (Datenbanken/Firefox/Chrome/Alle android apps (Die werden ohne komentar von android gekillt, wenn es meint, es bräuchte den RAM für was anders)) Entsprechend werden wieder höhere werte für die swappines sinnvoll.

60 ist für Server ganz OK. Desktops wollen eher 10 oder so haben. – Welche mit wenig RAM eher mehr, welche mit viel eher (>1GiB) weniger.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von MSfree » 05.10.2016 08:54:35

wanne hat geschrieben:Quatsch gerade die bremst du dadurch massiv aus.
Quatsch, die werden dadurch deutlich schneller.

Deine weitere Belehrung widerspricht ganz deutlich meinen Erfahrungen.

P.S.: auch, wenn du ein Moderator bist, aber mit Quatsch solltest gerade Du besonders sparsam umgehen.

Benutzeravatar
whisper
Beiträge: 3156
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von whisper » 05.10.2016 09:54:39

MSfree hat geschrieben:
wanne hat geschrieben:Quatsch gerade die bremst du dadurch massiv aus.
Quatsch, die werden dadurch deutlich schneller.

Deine weitere Belehrung widerspricht ganz deutlich meinen Erfahrungen.

P.S.: auch, wenn du ein Moderator bist, aber mit Quatsch solltest gerade Du besonders sparsam umgehen.
Dann mach doch einfach mal einen Test, wobei ein test in einer VM nicht sehr aussagekräftig ist, aber auf einer echten Hardware schon.
Ich tendiere allerdings zu Wanne's Seite, aber es hängt sehr vom konkreten Anwendungsfall ab, den kannst nur du wissen.

wanne
Moderator
Beiträge: 7448
Registriert: 24.05.2010 12:39:42

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von wanne » 05.10.2016 10:33:17

In VMs willst du performance mäßig eher gar keinen Swap haben. Lieber mehr RAM und dann das System drunter swapen lassen. Da ist swappieness von 0 durchaus sinnvoll. So rein theoretisch. Jemmand mit Erfahrungswerten in die Richtung?
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
whisper
Beiträge: 3156
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Warum ist swap eine partition und nicht eine Datei?

Beitrag von whisper » 05.10.2016 10:55:45

wanne hat geschrieben: (..)
Weiß auch nicht, warum sich Leute jetzt alle 16GiB einbauen. Mit was bekommt man sowas voll?
Bei mir: 16GB, mit XCOM2 und den normalen Gnome Desktop + Firefox+Thunderbird: 9,x GB in use
Also 8GB würde da noch kein Problem sein, wäre der Cahe etwas kleiner, aber mehr ist besser, wie bei den meisten Sachen

Antworten