Swap auf SSD Diskussion

  • Ausgelagert aus Raspberry Pi Preise nach Beitrag #74.


    Aber zurück zur Frage, was stelle ich nun damit an von einem Medium 1600 MB/s lesen zu können?

    Swap um Beispiel? Daten, die nicht mehr in den Ram passen und deswegen ausgelagert werden müssen? Das wäre mal ein realistisches Szenario, das bei jedem Computer mal ein Thema ist bzw. sein kann. Du bist mir immer noch den Beweis für deine Behauptung schuldig! Sag mir doch, wieviel Daten der Rockchip RK3568B2 bzw. das ganze Board maximal verarbeiten kann. Du scheinst es ja zu wissen!

    2 Mal editiert, zuletzt von hyle (17. April 2022 um 22:46)

  • Swap um Beispiel?

    Ja in der Tat wäre der Swap eine Idee. Aber auf der anderen Seite ist ein System was Swapt nicht mehr sonderlich schnell, da es doch recht langsam ist. Ich weiß jetzt nicht wie im Detail ein Swap funktioniert im Details, aber das dürfte wahrscheinlich in die Kategorie "Extrem viele kleine Zugriffe" fallen. Ob man einem solchen Medium aber einen Gefallen tut wenn man darauf den Swap liegen hat und intensiv nutzt? Dann eher einen Cache oder?


    Ich hab schon Projekte betreut wo wir 8GB/s aus dem RAM gelesen haben und es war teilweise noch zu langsam.

    Das wäre tatsächlich ein Szenario was Sinn macht. Nach den Aufgaben den Ram so schnell wie möglich freibekommen um etwas neues zu machen. Auf der anderen Seite auf einem System mit geringen IO Zeiten und eher gemächlichen LPDDR Ram ist der Flaschenhals eben meist nicht das Speichermedium. Ich denke für solche Aufgaben nicht Plattformen wie ARM eher nicht die ideale Wahl wenn man intensiv so was betreiben will. Da braucht man eine Hardware mit optimierten IO Zeiten.

    Aber mal diese Systeme beiseite. Kann man eigentlich ohne spezielle Controller solche hohen Bandbreiten überhaupt nutzen? Ich kann mir schon vorstellen das ohne spezielle Hardware die übrigen Komponenten schon lange vor dem Speichermedium in die Knie gehen und bremsen, wenn alles über die CPU geht.

  • Swap um Beispiel? Daten, die nicht mehr in den Ram passen und deswegen ausgelagert werden müssen? Das wäre mal ein realistisches Szenario, das bei jedem Computer mal ein Thema ist bzw. sein kann.

    Nein, das will man auf jeden Fall verhindern. Sobald geswappt wird, kann das System in der Zeit einfrieren. Am schlimmsten ist es, wenn benötigte Teile des OS ausgelagert werden. Aus eigener Erfahrung weiß ich, dass sogar das Auslagern auf eine NVME das System einfriert und das hatte ich auch schon mal als ich noch eine SSD benutzt habe. Wenn ich also mit einem aktuellen Desktop-System die Probleme, die durch das Swappen entstehen, nicht mit einer NVME verhindern kann, ist es bei einem SoC noch viel unwahrscheinlicher.

    Das kann man auch selbst ausprobieren.

    Schau dir die Auflistung der einzelnen Latenzen an. Die Unterschiede liegen zwischen Faktor 100 und 1000. Das ist der Grund, wieso ein System, das anfängt zu swappen, massiv an Leistung verliert, auch mit einer NVME. Der Cache ist schneller und solange der Cache nicht schnell genug befüllt werden kann, kommt es ins Stocken und die CPU muss warten.

    Den Swap legt man obligatorisch bei Servern an, um Abstürze zu verhindern. Sobald in den Swap ausgelagert wird, bekommt der Admin hoffentlich eine Nachricht und kann dann entsprechend darauf reagieren, bevor der Server abstürzt.

  • Den Swap legt man obligatorisch bei Servern an, um Abstürze zu verhindern.

    Macht es eigentlich überhaupt Sinn auf einem normalen System ein Swap zu nutzen? Ich habe es bei meinem Desktop seit bestimmt 5 Jahren nicht mehr. Denn wenn es anfängt, dann kann man zwar wirklich einmal eine Spitze abfedern ohne das irgendwelche Prozesse abgetötet werden, aber bis sich das System danach wieder fängt nach so einem Fall kann es wirklich lange dauern wenn noch Teile im Swap liegen.

    Ich denke wenn die eigene Plattform bei der normalen Arbeit Swapt, dann muss man überlegen ob nicht ein allgemeines Upgrade der Plattform notwendig ist. Wobei ja auch Lecks zu Problemen führen können und am Ende auch das Speichermedium schädigen. Bei einer normalen HDD ist das primär ein Defizit bei der nutzung, weil es eben langsam ist auch bei geringen Auswirkungen. Auf einer SSD kann man es im Zweifel aber übersehen und fragt sich dann warum diese alle paar Monate defekt ist.

  • Swap wird in der Regel nicht vom Anwender angelegt sondern vom System, wenn der physische Arbeitsspeicher nicht mehr ausreicht. Natürlich ist Swap langsamer als Ram. Umso wichtiger ist es, dass Swap auf einem schnellen Datenträger liegt.

    Sobald geswappt wird, kann das System in der Zeit einfrieren.

    Kann ich nicht bestätigen. Hast du jemals mit Adobe-Programmen gearbeitet? z.B. mit Photoshop und hochaufgelösten Bilddaten? Composings mit -zig Ebenen, Masken und Smartfiltern? Da ist swappen nicht die Ausnahme, sondern die Regel. Trotzdem friert da nichts ein, es wird mit der Zeit nur langsamer. Früher mit HDDs quälend langsam, heute mit SSDs erträglich.

    Hab als Beispiel an meinem Macbook Pro mal ein Bild in Photoshop geöffnet und ein paar Ebenen erstellt (z.T. in Smartebenen gewandelt, die brauchen einiges an Speicher).

    Vorher:

    Nachher:

    Der Swap wirkt sich dank schneller SSD kaum aus.

    Sorry hyle, das war's jetzt auch von meiner Seite aus.

  • EDIT: Ich würde die Themen nicht auseinanderpflücken, da dann der ganze Kontext verloren geht und/oder man zwischen Threads wechseln muss.

    Kann ich nicht bestätigen. Hast du jemals mit Adobe-Programmen gearbeitet? z.B. mit Photoshop und hochaufgelösten Bilddaten?

    Ein Prozess, der Amok läuft, reicht vollkommen aus, um dieses Szenario für den interessierten Anwender zu reproduzieren. In meinem Fall war beide Male ein Bug, der dafür gesorgt hat, dass eine Anwendung ununterbrochen Arbeitsspeicher verbraucht hat.

    Kannst ja mal testen:

    Code
    python -c "bytearray(16 * 1024 ** 3)"

    Der erste Faktor ist die Größe in GiB. Die einfach so wählen, dass es dem Arbeitsspeicher entspricht. Dann muss er zwangsläufig swappen und in der Zeit wird das System nicht auf Eingaben des Nutzers reagieren.

    Der Swap wirkt sich dank schneller SSD kaum aus.

    Weil zuerst die Teile ausgelagert werden, die nicht benötigt werden. Das ist unter normalen Umständen in Ordnung und auch nicht spürbar. In Situationen, wie ich sie beschrieben habe, kann man nur noch hoffen, dass das System wieder reagiert und man den Prozess sauber beenden kann, bevor der oom aktiviert wird.

    Den Swap hat man nur zur Sicherheit und wenn man das System so dimensioniert, dass man ohne Swap nicht auskommt, dann hat man falsch geplant und wird später nachrüsten müssen.

  • Weil zuerst die Teile ausgelagert werden, die nicht benötigt werden. Das ist unter normalen Umständen in Ordnung und auch nicht spürbar.

    Man muss ja auch unterscheiden. Früher in den ersten Jahren als Swap eine Notlösung war, da wurden eben mehr oder weniger wahllos Daten ausgelagert was gerade dann auch gerne mal in einem Absturz geendet hat.Die heutigen Betriebssysteme sind da ja schon im Vergleich recht "clever". Es kann also durchaus sein, dass gewisse Teile direkt in den Swap landen obwohl es noch überhaupt keinen Mangel an Speicher gibt. Auch die ganzen Hochsprachen optimieren das Programm darauf. Es kann also durchaus erkannt werden ob etwas nur im Speicher gehalten wird weil man es irgendwann einmal braucht, oder etwas das ständig im Ram gehalten wird weil immer wieder darauf zugegriffen wird.

    Beispiel ich schreibe eine grafische Oberfläche und lade aus meinem Verzeichnis 200 MB Grafiken zum gestalten meiner GUI. Dann wandern diese Daten ja meist zum Grafikspeicher und werden danach nicht mehr gebraucht. Also kann das System diese ewig benutzten Daten die voraussichtlich nicht gebraucht werden in den Swap/Cache verlegen damit sie noch da sind wenn sie doch noch einmal gebraucht werden aber keinen Ram belegen.

    Es scheint auch bei modernen Systemen so zu sein das Dinge die im Ram liegen und nicht mehr gebraucht werden wohl in einigen Konstellationen in den Swap geschoben werden für den Fall dass sie später doch noch einmal benötigt werden. Dann muss die Dateioperation die viele Zyklen gekostet hat nicht noch einmal verarbeitet werden, sondern kann zeitsparend vom Datenträger geladen werden. Zumindest sofern die ursprüngliche Datei nicht verändert wurde und das Ergebnis gleich wäre. Vorausgesetzt mit dem Wert wird irgendwas noch angestellt. Wenn nicht, dann wird im fertigen Programm überhaupt nichts mehr sein :)

    Betriebssysteme haben Millionen Zeilen Code und sind extrem optimiert. Wenn ein Programmierer ein Programm schreibt das nur aus einer Schleife besteht in der eine Variable mit 0 begonnen wird +1 zu rechnen in 10 Durchläufen, dann wird im fertigen compilierten Programm keine Schleife mehr stehen, sondern nur X=10 weil nichts anderes dabei rauskommen kann.

  • @DeaD_EyE, InterGeek

    Ihr konstruiert euch hier schön was zusammen. Swap ist doch kein Unfall! Salopp ausgedrückt muss das System einfach etwas unternehmen, wenn der physische Arbeitsspeicher nicht mehr ausreicht. Also wird der überschüssige Teil ausgelagert. Geschähe das nicht, könnte mindestens ein Programm oder gleich das ganze System nicht mehr arbeiten. Swap ist also ein notwendiges Übel. Es hat nichts mit amoklaufenden Prozessen oder ausgelagert weil nicht mehr gebraucht aber zur eventuellen späteren Verwendung mal gespeichert zu tun.

    hyle

    Nett dass du mir hier einen Thread zugeschustert hast, aber eigentlich möchte ich das Thema hier garnicht weiter diskutieren. Es ist mir doch zu sehr aus dem Zusammenhang gerissen. Und was Swap ist und warum es ihn gibt lässt sich leicht hier oder hier nachlesen. Das muss man nicht diskutieren.

    Einmal editiert, zuletzt von Jackinho (18. April 2022 um 00:05)

  • Swap ist also ein notwendiges Übel.

    Es ist ein notwendiges Übel bei einem System was mehr leisten soll als es leisten kann.


    Salopp ausgedrückt muss das System einfach etwas unternehmen, wenn der physische Arbeitsspeicher nicht mehr ausreicht.

    Das tut das System ja schon ohne Swap. Nimm ein Linux und lasse den Swap weg. Wenn der Speicher dann voll wird, dann besitzt der Kernel eine Funktion die einfach Prozesse abwürgt. Das System wird also auch ohne Swap wunderbar laufen wenn man mehr Speicher nutzen will als man hat. Die Folgen davon sind natürlich eher unschön wenn dann gerade das Office abgewürgt wird wenn man damit Arbeitet und schon eine Stunde nicht mehr gespeichert hat. Ich nutze wie gesagt seit rund 5 Jahren keinen Swap mehr, ich hatte mit meinen 32GB Ram noch nie irgendein Problem.

  • Ihr konstruiert euch hier schön was zusammen.

    Als CS1.6 veröffentlicht worden ist, habe ich mit dedizierten Linux Servern angefangen.

    Diese "konstruierten" Fälle kannst du z.B. im Serversupportforum nachlesen.

    Unter anderem ging es darum, wieso es eine schlechte Idee ist, keinen Swap bei einem dedizierten Server zu haben.

    Swap ist nicht dazu da, den RAM zu erweitern, sondern um einen Puffer zu haben, damit Anwendungen nicht gekillt werden, wenn sie zu viel RAM akquirieren. Wenn man meint, man könne wenig Arbeitsspeicher und viel Swap ein halbwegs reaktives System einrichten, ist man auf dem Holzweg.

    Probier es aus. Starte ein Programm, das den gesamten freien Arbeitsspeicher in Anspruch nimmt. Dann starte weitere Anwendungen und versuche sie zu bedienen. Wechsle zwischen den Anwendungen und beobachte, was passiert. Die LED für den Lese-/Schreibzugriff leuchtet dann dauerhaft, weil die ganze Zeit Teile des RAMs hin- und hergeswappt werden.

  • Ist euch eigentlich klar dass wir vom Selben reden, nur die Sache jeweils aus einer anderen Perspektive betrachten? :D

    Swap ist nicht dazu da, den RAM zu erweitern, sondern um einen Puffer zu haben, damit Anwendungen nicht gekillt werden, wenn sie zu viel RAM akquirieren.

    Ist das schlussendlich nicht das Selbe? System und Programme am Laufen zu halten? Nur das Warum anders interpretiert?

    Wenn man meint, man könne wenig Arbeitsspeicher und viel Swap ein halbwegs reaktives System einrichten, ist man auf dem Holzweg.

    Du gehst davon aus, dass ich als Anwender bewusst entscheide, dass jetzt geswappt wird oder nicht. Tu ich aber nicht, das macht das System für mich. Denn ich als Anwender zähle ja nicht mit wieviel Arbeitsspeicher dies oder jenes Programm plus geöffnete Dokumente belegt. Vielleicht bin ich ja als Mac-User einfach nur in der glücklichen Lage, mich nicht darum kümmern zu müssen. Ist das bei Linux wirklich so ein Problem, um das man sich Gedanken machen muss? Wäre mir bis jetzt so nicht bewusst gewesen. Ich bin nur Anwender und verlasse mich darauf, dass es läuft. Auch auf einem Pi mit einer beschränkten Menge an physischem Ram.

    3 Mal editiert, zuletzt von Jackinho (18. April 2022 um 05:07)

  • Du gehst davon aus, dass ich als Anwender bewusst entscheide, dass jetzt geswappt wird oder nicht. Tu ich aber nicht, das macht das System für mich. Denn ich als Anwender zähle ja nicht mit wieviel Arbeitsspeicher dies oder jenes Programm plus geöffnete Dokumente belegt. Vielleicht bin ich ja als Mac-User einfach nur in der glücklichen Lage, mich nicht darum kümmern zu müssen.

    Beim Mac sind Hardware, OS und Software sehr gut aufeinander abgestimmt.

    Auch wenn ausreichend RAM-Speicher vorhanden ist, kann/wird Swap-Speicher (z. B. zum zwischenspeichern, wenn der Bereich im RAM warum auch immer freigegeben werden soll/muss) benutzt. Die Tendenz/Neigung zur Benutzung von Swap-Speicher kann (unter Linux) mit Hilfe der swappiness (eine Art von Priorisierung) beeinflusst werden. Wenn kein Swap-Speicher (zum Zwischenspeichern) benutzt wird oder benutzt werden kann, wird dort wo die Änderung statt gefunden hat bzw. hingehört (z. B. in der Datei), (zwischen)gespeichert.

    Wenn es Probleme bei der Benutzung von Swap-Speicher gibt, ist i. d. R. die verwendete Software, nicht für das OS/Konfiguration/Hardware/... "optimiert".

    EDIT:

    BTW: Wenn Swap-Speicher zur Verfügung steht bzw. zugänglich ist, könnte (temporär? und bei der einen oder anderen Software) auch Redundanz evtl. eine Rolle spielen. D. h. die Daten werden sich RAM und im Swap-Speicher befinden.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (18. April 2022 um 10:28)

  • Im Grunde gilt doch, dass man Swap meiden sollte, wenn es möglich ist. Swap ersetzt ja "nur" ein Problem durch ein Anderes, welches auch noch reichlich Ressourcen benötigt.

    Wenn der Speicher ausgeht, hat man zu wenig davon und kann dann entweder mehr Speicher aufrüsten, oder der Benutzer passt sich dem Speichermangel an.

    Betriebssysteme haben Millionen Zeilen Code und sind extrem optimiert.

    Das Betriebssystem extrem optimiert sind halte ich für ein Gerücht. Zumindest die grossen bekannten BS. Ich würde eher das Gegenteil behaupten.

  • Im Grunde gilt doch, dass man Swap meiden sollte, wenn es möglich ist. Swap ersetzt ja "nur" ein Problem durch ein Anderes, welches auch noch reichlich Ressourcen benötigt.

    Die Frage ist ja die, wie sollte man den Swap meiden? In dem man kein Swap zur Verfügung stellt oder in dem man die Nutzung von Swap so niedrig wie möglich priorisiert?

    Wenn man ein System (OS + Software) hat, das auch bei _immer_ ausreichend RAM, Swap (manchmal) benutzen will oder benutzen würde, wäre für das Leistungsverhalten (Performance) des Rechners, fehlender Swap-Speicher evtl. ein Problem. Aber ich denke, der Unterschied im Leistungsverhalten wird dem normalen user, evtl. gar nicht auffallen.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • rpi444 Da stimme ich dir zu. Der Normale Anwender muss sich da keine Gedanken machen. Er nutzt sein System einfach und kann sich in der Regel darauf verlassen, dass sein System sinnvolle Voreinstellungen nutzt. Eine Swap Partition/Datei, oder Auslagerungsoption tut erst einmal nicht weh. Zugegeben verbraucht diese Option natürlich auch Ressourcen, aber das kann man wohl vernachlässigen. Es kann ja auch durchaus nützlich sein dass wenn man mal zu viel braucht etwas abfedern kann. Simples Beispiel ich mache Videoschnitt in 4K und plötzlich reichen bei einer Operation kurzzeitig meine 32GB Ram nicht aus. Dann schmiert mir zumindest nicht die Anwendung ab.

    Das ist also alles legitim und in Ordnung. Was aber nicht Sinn der Sache ist, ist ein System zu nutzen für Aufgaben die es so normal und Regelmäßig nicht bewältigen kann mit der Idee dass der 8 GB Swap die fehlenden Gigabyte an Ram ausgleichen kann. Bei Leistungsspitzen oder besonderen Situationen ist es eine gute Reserve, aber keine produktive Ressource die man einplanen sollte. Man sollte es sehen wie einen Rettungschirm.

  • Die Frage ist ja die, wie sollte man den Swap meiden? In dem man kein Swap zur Verfügung stellt oder in dem man die Nutzung von Swap so niedrig wie möglich priorisiert?

    Meine Antwort wäre, es kommt drauf an. ;) Also auf das verwendete System und dessen Ressourcen und den gestellten Anforderungen. Man muss abwägen. Es gibt bestimmt ein Einsatzzweck wo Swap das geringere Übel ist. Ein RPi mit SD Karte und vermutlich auch anderer Massenspeicher über USB, da halte ich die Verwendung von Swap für kontraproduktiv. Weil die Swap Datei zu klein ist (um nützlich zu sein), viel zu langsam und den Datenträger unnötig kaputt schreibt.

    Ich würde sogar sagen, das bei Raspberry Pi OS die Systemvoreinstellung schlecht/falsch gewählt ist. Hier ist der "normale Anwender" der sich keine Gedanken macht/machen muss im Nachteil.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!