Ist Swap ein Anachronismus?

43

Ich habe Unix eine ganze Weile benutzt und in den letzten Jahren war ich der Meinung, Swap sei ein Anachronismus, aber ich wäre gespannt, was andere Leute davon halten.

Mein Argument ist ungefähr das folgende (vorausgesetzt, es werden keine globalen Einschränkungen oder Änderungen der OOM-Einstellungen vorgenommen):

There is little value in swap because if you need to swap out to disk, 
odds are it's going to be a vicious cycle where an app will continue 
to eat not only real memory, but swap as well until it gets OOM 
reaped (_if_ it gets OOM reaped). 

If you have swap enabled, it will only prolong this death march to 
the detriment of other processes - and in the worst case where the
process is not OOM reaped in a timely manner, grind the system to
a halt.

Without swap, it will probably get OOM reaped sooner (if at all)

Für jeden Service, der auf Leistung ausgelegt ist, ist das Verständnis der Obergrenzen der Ressourcennutzung meiner Meinung nach der Schlüssel zur Optimierung. In diesem Fall wissen Sie, wie viel Sie benötigen.

Ich kann mir nicht viele Situationen vorstellen (einige, aber nicht viele), in denen Sie einen laufenden Prozess anhalten und ihn austauschen könnten, um Platz für andere Dinge zu schaffen ein core-dump über gcc oder ein manuelles auskopieren des speichers wäre funktional äquivalent.

Ich möchte auf keinen Fall ein eingebettetes System austauschen (obwohl möglicherweise ein kleinerer RAM verfügbar ist). Wenn Ihnen der RAM ausgeht, ist es mir lieber, als einen Flash-Speicher mit einer Million Schreibzugriffen pro Sektor zu zerstören Fahren Sie über ein Wochenende, indem Sie die Sektoren bis zur Noppe nivellieren.

Gibt es Unix-Bärte, die zwingende Gründe haben, weiter zu tauschen?

UPDATE Antworten && Analyse:

  • BESTÄTIGT? - fork () benötigt für den untergeordneten Prozess dieselbe Speicherkapazität wie der übergeordnete

    Modern fork () ist Copy-on-Write für Kinder unter POSIX (allgemein), aber speziell für Linux und FreeBSD , und ich nehme OSX durch Extrapolation an. Ich betrachte diesen Teil des anachronistischen Gepäcks, das der Tausch mit sich führt.

    Interessanterweise wird in diesem Solaris-Artikel behauptet, dass Solaris zwar Copy-on-Write mit fork () verwendet, dass Sie jedoch mindestens die doppelte (!) Größe des übergeordneten Prozesses im freien virtuellen Speicher haben sollten, damit fork () nicht in den Arbeitsspeicher verschwindet Mitte. Während das Solaris-Element das Argument, dass Swap ein Anachronismus ist, etwas zunichte macht, denke ich, dass genug Betriebssysteme CoW so korrekt implementieren, dass es wichtiger ist, den Mythos zu zerstreuen, als ihn als weitere Rechtfertigung für Swap zu markieren. Schon seit. Seien wir ehrlich. Zu diesem Zeitpunkt sind die Leute, die Solaris tatsächlich verwenden, wahrscheinlich nur Oracle-Leute. Nichts für ungut Solaris!

  • BESTÄTIGT - tmpfs / ramfs-Dateien können ausgetauscht werden, wenn tmpfs / ramfs voll ist

    Verwenden Sie keine No-Limit-tmpfs / ramfs! Definieren Sie immer explizit die RAM-Menge, die tmpfs / ramfs verwenden soll.

  • PLAUSABLE - Haben Sie einen kleinen Swap "nur für den Fall"

    Einer meiner alten Chefs hatte ein tolles Sprichwort: "Sie wissen nicht, was Sie nicht wissen" - im Grunde können Sie keine Entscheidung treffen, die auf Informationen basiert, die Sie noch nicht haben. Dies ist jedoch ein plausibles Argument für den Austausch mit mir. Ich vermute, dass die Art der Maßnahmen, die Sie ergreifen würden, um festzustellen, ob Ihre Anwendung ausgetauscht wird oder nicht, schwerwiegender ist, als zu prüfen, ob malloc () erfolgreich ist oder die Ausnahme abfängt ein fehlgeschlagenes neues ().

    Dies kann in Fällen nützlich sein, in denen Sie einen Desktop ausführen und eine Reihe von zufälligen Dingen ablaufen, aber selbst dann - wenn etwas verrückt wird, wäre es besser, OOM zu ernten, als in die Tausch-Hölle einzutauchen. Das bin nur ich.

  • GEHACKT! - Auf Solaris , swap ist wichtig für ein paar Gründe

    tmpfs - erklärt , die Menge an freiem Speicherplatz zur Verfügung tmpfs auf die Menge von nicht zugeordneten Swap - Speicher im System abhängt. Die Größe eines tmpfs-Dateisystems wächst, um die darauf geschriebenen Dateien aufzunehmen, aber es gibt einige inhärente Kompromisse für starke Benutzer von tmpfs. Tmpfs teilt Ressourcen mit den Daten- und Stapelsegmenten der ausgeführten Programme. Die Ausführung sehr großer Programme kann beeinträchtigt werden, wenn tmpfs-Dateisysteme nahe an ihrer maximal zulässigen Größe liegen. Es steht Tmpfs frei, bis auf 4 MB den gesamten Swap-Speicher des Systems zuzuweisen.

    Solaris - Fakten und Mythen über Swap - Zustände Virtueller Speicher besteht heute aus der Summe von physischem RAM und Swap - Speicherplatz auf der Festplatte. Für Solaris muss KEIN Auslagerungsspeicher konfiguriert werden. Wenn Sie diese Option auswählen, können Sie keine neuen Prozesse starten, sobald der Arbeitsspeicher voll ist. .

    Ich bin mir nicht sicher, ob dies bedeutet, dass die maximale virtuelle Karte, die Sie erstellen können, RAM + Swap ist , oder ob Sie immer noch so etwas wie mmap () eine Datei erstellen können, die größer als RAM ist, und sich dabei auf die verzögerte Initialisierung von mmap () verlassen können Heutzutage läuft Solaris wahrscheinlich einwandfrei ohne Swap, es scheint jedoch weniger benutzerfreundlich zu sein als andere POSIXy-Betriebssysteme.

  • GEHACKT! Beliebte Linux-Tools für den Ruhezustand scheinen sich auf Swap zu verlassen

    Standardmäßig sieht es so aus , als ob TuxOnIce für den Ruhezustand auf Swap angewiesen ist - obwohl andere Backends existieren. Wenn Sie jedoch keine Box verwenden, die in den Ruhezustand versetzt werden muss, würde ich immer noch hinter der Aussage stehen, dass Swap unter Linux anakronistisch ist.

synthesizerpatel
quelle
Ich habe nicht viel un * x Bart (einige Haare noch;), aber meine 2 Cent wären, dass ein "bisschen" Tausch Ihrem System etwas Robustheit verleihen würde. Anstatt direkt OOM zu verwenden, würden Sie stattdessen tauschen, wenn etwas über Ihren Systemgrenzen liegt. Klar, wenn Sie wirklich weit über Ihre Systemgrenzen hinausgehen, wird Ihr System irgendwann abstürzen / anhalten / sich selbst zerstören / was immer Sie sich vorstellen können. Also ein bisschen Seil zum Spielen geben;)
Ouki
1
Die Sache mit fork () ist in der Tat wahr, wenn Sie Ihr System so einstellen, dass es niemals RAM überlastet (dies ist nicht die Standardeinstellung). Warum Sie diese Einstellung nun nicht mehr benötigen, weiß ich nicht. Es ist nicht nützlich für die Echtzeitverarbeitung.
Joshua
@Jushua: Je nach Betriebssystem ist eine Überbelegung des Speichers möglicherweise nicht die Standardeinstellung oder sogar möglich.
Juli
Ich habe einen NAS-Server mit 8 GB RAM, auf dem bis zu 2 VMs ausgeführt werden. Ich habe keinen Swap gesetzt. Wenn es anfängt stark zu tauschen, dann ist es sowieso schon tot. Es unterstützt also perfekt Ihre Argumentation. Andererseits benutze ich meinen rostigen Desktop immer noch mit nur 1 GB RAM und habe dort einen Swap, um mit dem spärlichen Speicher umzugehen. Das macht die Sache etwas langsamer, hilft mir aber, Firefox und andere Anwendungen gleichzeitig zu öffnen.
Huygens
Ich finde, dass der OOM-Killer zu spät ausgelöst wird, nachdem alle Caches geleert wurden und das System träge geworden ist. Um mein System am Laufen zu halten, benutze ich earlyoom oder nohang , um den gleichen Job zu machen, aber früher! Kann mit oder ohne Swap verwendet werden.
Joeytwiddle

Antworten:

28

Verwechseln Sie nicht (den) Swap (als Festplattenbereich) und (den) Swap (als Methode zum Verschieben von Speicherseiten vom RAM auf die Festplatte und umgekehrt).

Übermäßiges Austauschen sollte aus Performancegründen vermieden werden, ein Swap-Bereich ist jedoch nicht unbedingt ein Problem.

Auf Systemen wie Linux wird der OOM-Killer ausgelöst, wenn der Arbeitsspeicher überlastet wird, dh wenn Prozesse mehr Arbeitsspeicher zuweisen als verfügbar ist, wenn der Arbeitsspeicher nicht ausreicht, um die Situation zu bewältigen. Sie müssen dem Algorithmus vertrauen, der verwendet wird, um den "richtigen" Prozess zum Beenden auszuwählen, und akzeptieren, dass einer oder mehrere Ihrer Prozesse beendet werden, ohne die Möglichkeit zu haben, ordnungsgemäß herunterzufahren. Hier ist eine berühmte Analogie , die erklärt, warum der OOM-Killer möglicherweise überhaupt keine gute Idee ist.

Auf Systemen wie Solaris, die keinen Speicher überbelegen, dh sicherstellen, dass eine Speicherreservierung immer durch den virtuellen Speicher gesichert wird, sei es im RAM oder auf der Festplatte, ist ein ausreichender Auslagerungsbereich unbedingt erforderlich, da sonst ein möglicherweise erheblicher Teil des RAM vorhanden ist verschwendet.

jlliagre
quelle
1
Sind Sie sicher, dass die Aussage zu Solaris immer noch zutrifft? blogs.oracle.com/jimlaurent/entry/solaris_faq_myths_and_facts lautet: Der virtuelle Speicher besteht heute aus der Gesamtsumme des physischen Arbeitsspeichers und des Auslagerungsspeichers auf der Festplatte. Für Solaris muss KEIN Auslagerungsspeicher konfiguriert werden. Wenn Sie diese Option auswählen, können Sie keine neuen Prozesse starten, sobald der Arbeitsspeicher voll ist. Ich glaube, ich verstehe, worum es Ihnen geht - wenn Sie etwas Größeres als physischen Widder ohne den Tausch mappen wollten, konnten Sie das nicht? (Ungeachtet dessen, dass mmap ein Lazy Initializer ist).
synthesizerpatel
5
Ja, ich bin mir sicher, dass mein Standpunkt zu Solaris immer noch wahr ist. Auch wenn das Zitat von Jim Laurent zutrifft, dh Solaris verlangt kein Swap, bedeutet das Fehlen eines Swap, dass die gesamte Speicherreservierung (dh Malloc) durch RAM gesichert werden muss, auch wenn ein Teil des zugewiesenen Speichers nicht verwendet wird. Dies hat nichts mit einer großen mmap oder tmpfs zu tun, obwohl tmpfs auch ein Grund ist, warum Sie möglicherweise ein Swap mit Solaris (und Linux auch für diese Angelegenheit) wünschen.
Juli
1
Update für Linux: Overcommiting kann deaktiviert werden, der OOM-Algorithmus kann geändert werden, Sie können sogar einen eigenen OOM-Handler mit cgroups verwenden.
Peterph
1
@peterph Durch Deaktivieren von Overcommitting unter Linux wird Swap noch weniger zum Anachronismus. Wenn Sie kein Overcommit durchführen, müssen Sie sicherstellen, dass Sie einen Swap-Bereich haben, der groß genug ist, um alle Reservierungen zu sichern.
Juli
1
Der von einem Fork reservierte virtuelle Speicher hängt von der Größe des Programms ab, mit dem er ausgeführt wird. Angenommen, Sie haben eine Java-VM mit 2 GB Arbeitsspeicher, für die vorübergehend 2 GB mehr erforderlich sind. Wenn dies passiert, während weniger als 2 GB verfügbar sind, oder wenn mehrere Male gleichzeitig vorhanden sind, fallen ein oder mehrere Forks aus. Dies ist eine häufige Situation bei nicht überlasteten Betriebssystemen und bei deaktivierten überlasteten Betriebssystemen auch unter Linux. Es kann leicht repariert werden, indem man einen Swap-Bereich hat, der groß genug ist, was meiner Meinung nach eine bessere Lösung ist als eine Überbelegung des Speichers.
Juli
3

Ich kenne einen Grund, weiter zu tauschen. Ich habe eine App, die so viel Speicher benötigt, wie ich mir leisten kann, um sie für mein System zu konfigurieren. Es verwendet Hadoop, das in einem Teil der Verarbeitung einen Fork und Exec ausführt, um einen einzelnen Unix-Befehl auszuführen (ich denke "uname" oder "user" oder etwas, für das sie kein Java-Äquivalent finden konnten). Es scheint, dass Java keine vfork mit Copy-on-Write-Semantik ausführt, wie es eine native Anwendung tun würde. Wenn ich meine App mit 4 GB RAM starte, verwendet der Fork beim Verzweigen weitere 4 GB RAM, gibt sie jedoch schnell wieder frei. Wenn ich nicht 4 GB Swap für diesen Hadoop hätte, müsste ich 8 GB RAM bezahlen, nur um 4 GB für meine App zu haben.

Paul Tomblin
quelle
Dies ist ein großartiger Punkt, aber kein Spiegelbild moderner fork () - Unter Linux und FreeBSD (und angeblich OSX?) Wird fork () durch die Verwendung von Copy-on-Write-Seiten implementiert. Copy-on-Write (oder COW) ist eine Technik, um das Kopieren der Daten zu verzögern oder ganz zu verhindern. Anstatt den Prozessadressraum zu duplizieren, können Eltern und Kind eine einzige Kopie gemeinsam nutzen. Die Daten sind jedoch so gekennzeichnet, dass beim Schreiben ein Duplikat erstellt wird und jeder Prozess eine eindeutige Kopie erhält. Zitate: forums.freebsd.org/showthread.php?t=26355 und Linux-Manpage für fork ()
synthesizerpatel
Zwar gibt es einige Seiten, die nicht als COW gekennzeichnet werden können. Zum Beispiel die Seiten, die für den Kernelstapel des neuen untergeordneten Prozesses verwendet werden, und die Seiten, die für interne Datenstrukturen (die files_struct, die struct signals, die task_structund andere) verwendet werden. Bei vielen ausführbaren Seiten handelt es sich nicht um positionsabhängigen Code (PIC). Daher muss für Seiten mit ausführbarem Code, die vom Dynamic Loader ( ld-linux.so) geändert wurden, ein Auslagerungsspeicher reserviert sein, auch wenn nichts unmittelbar in den Auslagerungsspeicher geschrieben wird. Deshalb liebe ich Linux. Sie können Swap ausschalten und das System läuft weiter. :)
Azhrei
3

Ich kann die Diskussion technisch nicht ergänzen, aber ich kann ein paar Beispiele nennen. Mein altes Notebook (2 GB RAM kunbuntu lucid) wird normalerweise mit Swap bei 0 ausgeführt. Wenn ich eine Übertragung (BitTorrent-Client) mit einer Anzahl von Torrents durchführe, die zusammen 100 Verbindungen verwenden können, kann der Swap sehr hoch sein. Es wird noch schlimmer, wenn ich eine XP-VM habe, die 1 GB realen Speicher verwendet.

Ich habe andere kommentieren sehen, dass speicherintensive Prozesse wie Grafik-Rendering auch in Swap eintauchen können. Wenn Sie das nur gelegentlich tun, ist das kein Problem.

Was OOM-Probleme angeht, kann Swap tatsächlich ein Lebensretter sein, da Sie Zeit zwischen dem Erkennen des Problems und dem Übergang nach Süden haben. Viele Dinge verbrauchen fast mein gesamtes Gedächtnis, deshalb schaue ich mir das nicht an, aber wenn der Swap hochläuft, bemerke ich das und beginne, nach dem Problem zu suchen - bevor es mich beißt.

Joe
quelle
Ja, ältere Systeme können nicht viel ohne aktivierten Swap. Ich habe immer noch ein altes Subnotebook mit 256 MB RAM, in dem Swap erforderlich ist, um so ziemlich jedes Programm zu starten. Ich glaube, die Frage zielt jedoch auf moderne Systeme ab.
Dmitry Grigoryev
3

Es gibt eine sehr gute Anwendung für Swap Space: RAM-Erweiterung, indem Sie den Swap Space auf ein Speichergerät setzen, das RAM verwendet, um die Einschränkungen des installierbaren System-RAM zu überwinden

Schauen Sie sich dieses Gadgest an http://techreport.com/articles.x/16255 Es ist im Grunde eine Schnittstelle von S-ATA zu DDR2-RAM. Sie können bis zu 64 GB RAM in diese stecken. Indem Sie einen Swap-Bereich auf einen dieser Bereiche setzen, erhalten Sie erheblichen zusätzlichen RAM. Natürlich ist es nicht so schnell wie normaler System-RAM. Dadurch wird der System-RAM jedoch zu einer Art zusätzlicher Cache-Schicht.

Datenwolf
quelle
1
In Anbetracht seines Preises (549 US-Dollar) wäre es nicht effizienter, 100 US-Dollar in ein Mainboard zu investieren , das 64 GB RAM unterstützt ?
Dmitry Grigoryev
1
@DmitryGrigoryev: Natürlich. Aber manchmal sind Sie gezwungen , diese besondere Art von Hardware zu verwenden (weil aus Gründen , Husten medizinische System - Zertifizierung Husten ) , sondern auch in sehr kurzer Zeit produziert mit lächerlich großen Datenmengen zu tun haben (man denke Tomographen, Datenraten> 3GiB / s).
Datenwolf
Müssten Sie in diesem Fall nicht auch das RAM-Laufwerk als medizinisches Gerät zertifizieren? ;) Aber ja, ich habe verstanden.
Dmitry Grigoryev
1
@DmitryGrigoryev: In der Tat müssen Sie es tun. Die Zertifizierung eines solchen S-ATA-RAM-Laufwerks ist jedoch sehr viel einfacher als die Zertifizierung eines gesamten Mainboards. Bei der Beschaffung von Computern für medizinische Geräte kaufen Sie in der Regel so viele Komponenten wie möglich, die von der Stange zertifiziert sind. Für diejenigen Teile, für die keine Zertifizierung verfügbar ist, führen Sie die erforderlichen Prüfungen und Zertifizierungen selbst durch. Insbesondere in der Forschung, wo der Schwerpunkt auf der Patientensicherheit liegt und die Daten nicht für die Behandlungsplanung verwendet werden, ist dies die kostengünstigste und schnellste Lösung. BT; DT.
Datenwolf
3

Ich habe Linux und Windows ohne Swap (Auslagerungsdatei, in der Windows-Nomenklatur) auf Notebooks / Desktops mit 4 GB oder mehr ausgeführt. Es gibt einige Fälle, in denen die Erinnerung erschöpft ist. Ich beschäftige mich nur mit ihnen. Ich habe das Gefühl, dass das System auf diese Weise schneller ist, worauf ich mehr Wert lege. Keine besonderen Anforderungen an meine Arbeitsbelastung.

Dinge, die ich gelernt habe:

  • Windows "verliert" mit der Zeit den Speicher, in etwa 20 bis 30 Tagen Betriebszeit komme ich zu einem Punkt, an dem ich es vorziehe, einfach neu zu starten. Ich weiß nicht, warum das passiert. Ich vermute, es könnte sich um eine undichte Stelle bei einem Treiber oder dem Antivirenprogramm handeln. Wenn Sie über eine Auslagerungsdatei verfügen, kann der ausgelagerte Speicher meiner Meinung nach in die Auslagerungsdatei verschoben werden. Daher ist es schwieriger, dieses Problem auf einem normalen Windows-System zu bemerken.
  • Firefox kann viel besser mit wenig Speicher umgehen als Chrome. Firefox warnt Sie und läuft immer noch. Chrome stürzt nur ab.
spuk
quelle
2

Ich denke, dass Ihre Argumente für einen Server , auf dem die Leistung wichtig ist, durchaus zutreffen und es möglicherweise nicht vorhersehbar ist, welche App als Nächstes agiert.

Für einen Desktop finde ich Swap jedoch nützlich, wenn ich Aufgaben pushe und knacke.

Wenn ich zum Beispiel mit einer App an einer Aufgabe arbeite Aund dann feststelle, dass ich die App Bfür etwas (entweder eine Unteraufgabe oder eine Unterbrechung) verwenden muss, ist es für mich mental einfacher, das AWechseln auf die Festplatte zuzulassen, während ich arbeite in Bals zu schließen Aund dann daran denken, es danach erneut zu starten.

Dies gilt insbesondere dann, wenn Aein nicht gespeicherter Zustand beibehalten wird, der beim Neustart nicht wiederhergestellt werden würde.

Es Ahängt von der App ab, ob es schneller ist, auf den Swap zuzugreifen oder ihn zu schließen und neu zu starten. (Einige schaffen es, einen langsamen Start zu haben, aber eine kleine Wohngröße.)

Ich stimme jedoch zu, dass eine bessere Lösung zur Steigerung der Produktivität darin besteht, zusätzlichen Arbeitsspeicher zu installieren.

joeytwiddle
quelle
Update: Nach dem Schreiben dieser Antwort besaß ich einen Laptop mit viel RAM und einer langsamen Festplatte. In diesem Fall hat sich mein Rat umgekehrt! Hier finden Sie eine Zusammenfassung der Vor- und Nachteile .
Joeytwiddle
1

Auf meinem System verschüttet / tmp, um zu tauschen, wenn es zu viel RAM verschlingt.

Dies ist viel schneller als ein echtes Dateisystem für / tmp.

Joshua
quelle
Das ist ziemlich gefährlich - wenn ich RAMFS benötige, gebe ich in fstab (oder options) an, um die Größe explizit festzulegen. Es ist genauso wahrscheinlich, dass ein Programm mit der Speicherzuweisung verrückt wird, wie dass es beginnt, Dateien in / tmp zu erstellen. Swap ist ein schlechter Ort, an dem RAMFS-Dateien angezeigt werden (insbesondere, wenn Sie sich für die Geschwindigkeit auf RAMFS verlassen)
synthesizerpatel
2
Ich überschreite dort häufig die RAM-Größe. tmpfs, die durch Swap gesichert sind, sind sogar beim Verschütten bedeutend schneller als ext2.
Joshua
Gut zu wissen - und es wird wahrscheinlich ein zukünftiges Forschungsobjekt sein -, dass ich mir immer noch Sorgen über eine Anwendung mache, die meinen RAM durch den Proxy von tmpfs / ramfs in / tmp füllt. Das gibt mir die heebie jeebies!
synthesizerpatel
Dann setze das Limit = Größe des Swaps.
Joshua
Dies ist übrigens der Unterschied zwischen ramfs und tmpfs. tmpfs können beim Tauschen verschüttet werden, ramfs nicht.
Joshua
1

Es gibt viele Gründe, wenn Swap verwendet wird.

Wenn das System nicht über genügend physischen Speicher verfügt, kann der Kernel normalerweise einige Anwendungen (in der Tat - einige Teile des Speichers, die von nicht ausgeführten Anwendungen verwendet werden) zum Auslagern verwenden.

Später, wenn diese Anwendungen etwas tun sollten (z. B. wenn einige Daten auf einem Socket ankommen oder ein Zeitgeber ausgelöst wird), versetzt der Kernel eine andere Anwendung in den Swap.

Ein weiteres Beispiel für die Verwendung von Auslagerungen ist Suspend to Disk.

Bei eingebetteten Geräten können alle in (mindestens) zwei große Gruppen unterteilt werden:

  1. Sie führen Linux / Windows oder ein ähnliches Nicht-RTOS-Betriebssystem (Real Time OS) aus. oder
  2. Sie betreiben ein RTOS.

Natürlich gibt es Geräte, die nur einen Code ausführen (eine Art Mikrocontroller) usw. Ich würde sie nicht beschreiben, da solche Geräte kein Betriebssystem haben. Daher ist es für solche Geräte sinnlos, über Tausch zu diskutieren.

Die erste Gruppe eingebetteter Geräte (auf denen einige Betriebssysteme ausgeführt werden) kann (und normalerweise verwendet sie) den Swap. Und im Allgemeinen verwenden solche Geräte Swap auf die gleiche Weise wie Desktops und Server.

Die zweite Gerätegruppe (mit RTOS) verwendet Swap überhaupt nicht, da RTOS zeitlich begrenzt ist, um auf Ereignisse zu reagieren

  • Das Lesen vom Swap kann unvorhersehbare Zeit in Anspruch nehmen
  • Geräte haben eine vordefinierte (zur Kompilierungszeit) Anzahl von Aufgaben, die nicht ausgetauscht werden müssen

Übrigens, es gibt eine Menge Beschreibungen, wie Linux den Swap verwendet. Eine davon ist http://distilledb.com/blog/archives/date/2009/02/22/swap-files-in-linux.page
Windows ein ähnlicher Ansatz.

vasily-vm
quelle
Außerdem wird Swap für den Ruhezustand (Suspend to Disk) benötigt, es sei denn, Sie verwenden etwas wie TuxOnIce.
Renan
1

Es scheint mir, dass sowohl der Ruhezustand als auch der hybride Schlaf unter Linux Auslagerungsspeicher benötigen .

Ich habe unter Linux nie Swap Space / Partition verwendet, bis ich mit der Notwendigkeit von Hybrid Sleep konfrontiert wurde - da bei meinem System kein Energiesparmodus bei kritischem Akkuladestand verfügbar war, da dies von Upower übernommen wurde, das nur zwischen Shut-Down, Hibernate und Hybrid auswählte -schlafen. (mehr hier )

Gemeinschaft
quelle
0

Ein paar gute Anwendungen, die ich gesehen habe, sind Prozesse, die viel Speicher benötigen, aber nicht leistungskritisch sind. Ein Fall war ein alter Firefox, der ein schlechtes Gedächtnisleck hatte. Es würde RAM füllen und überlaufen, um ohne negative Auswirkungen zu tauschen. Ein anderer, den wir hatten, war unser rekursiver DNS-Server (der schnell einen riesigen Cache aufbaut, der selten verwendet wird).

Die andere Erklärung, die ich über Swap gesehen habe, lief in etwa so: "Sie sollten immer SWAP = 2 * RAM konfigurieren. Dies ist völliger Unsinn, es gibt keine Beziehung zwischen RAM und Swap. Swap dient dazu, Spitzen in der Speichernutzung auszugleichen Wenn Ihre Last stabil ist, brauchen Sie keinen Swap. Wenn Ihre Last sehr variabel ist, brauchen Sie genügend Swap für die Spikes, und arrangieren Sie dies so, dass sie die meiste Zeit in den Arbeitsspeicher passen swap wird nur selten genug verwendet, um die Leistung insgesamt nicht wesentlich zu beeinträchtigen. Zusammenfassend lässt sich sagen, dass Sie keine Ahnung haben, wie hoch Ihre Lastspitzen sind, und konfigurieren Sie SWAP = 2 * RAM, da die Festplatte so viel billiger als RAM ist. "

Einige alte Versionen von Solaris konnten Swap überhaupt nicht verwenden, es sei denn, es gab mindestens so viel Swap wie RAM (ich erinnere mich, dass es festen Swap-Speicher für das Verlassen von RAM oder so etwas reservierte), so dass 2 * RAM wirklich um das vernünftige Minimum lag Wert. Aber das war vor Äonen, als unsere große Maschine 64 MiB RAM und eine 1 GiB Festplatte hatte ...

vonbrand
quelle