Ich bin auf einen Thread über die Installation eines SSD-Laufwerks in MacBook Pro gestoßen.
Jemand in den Kommentaren empfahl auch, die Auslagerungsdatei zu deaktivieren, sagte aber nicht warum:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*
Ich frage mich, warum man die Auslagerungsdatei in Mac OS X deaktivieren möchte. Erhöht
es die Leistung? Stabilität?
Irgendwelche Nachteile?
Ist es schließlich sinnvoll, die Auslagerungsdatei zu deaktivieren, wenn keine SSD verwendet wird?
Ich frage mich, warum man die Auslagerungsdatei in Mac OS X deaktivieren möchte. Erhöht es die Leistung? Stabilität? Irgendwelche Nachteile?
Ich nehme an, die Leute würden es für ein SSD-Laufwerk tun, weil diese Laufwerke nicht die gleiche Lebensdauer wie herkömmliche magnetische Spinning-Disk-Laufwerke haben. Es gibt eine begrenztere Anzahl von Schreibzyklen, daher würde die Verwendung mit einer Auslagerungsdatei diese Zyklen vermutlich schneller verbrauchen.
Ist es schließlich sinnvoll, die Auslagerungsdatei zu deaktivieren, wenn keine SSD verwendet wird?
Wenn Sie viel RAM haben, würde dies möglicherweise die Leistung beschleunigen, aber es ist im Allgemeinen keine gute Idee . Wenn Sie an die Speichergrenze stoßen, werden die Dinge schuppig.
Außerdem wird verdrahteter Speicher nicht freigegeben, wenn er ungültig wird, er wird nur freigegeben, wenn ein Auslagerungsereignis ausgelöst wird, was nicht geschieht, wenn der virtuelle Speicher deaktiviert ist. So wird es nicht lange dauern, bis Ihr gesamter Speicher verschlungen ist, auch wenn er nicht mehr verwendet wird.
Der Grund, warum sie die Auslagerungsdatei deaktiviert haben, ist wahrscheinlich Paranoia über SSDs mit einer maximalen Anzahl von Schreibvorgängen pro Block. In Auslagerungsdateien kann häufig geschrieben werden, was möglicherweise zu einer Festplattenfragmentierung (sowie zu einer Fragmentierung des Dateisystems) und schließlich zu einem früheren Ausfall der Festplatte führen kann.
Allerdings handelt es sich definitiv um eine verfrühte Optimierung. Es ist fast immer eine SCHRECKLICHE , SCHRECKLICHE Idee, Ihre Auslagerungsdatei zu deaktivieren. Die Auslagerungsdatei ist dafür da, wenn Ihre laufenden Programme mehr Speicher verbrauchen, als Sie physisch installiert haben. Wenn Sie es deaktivieren, können Sie möglicherweise nicht so viele Programme gleichzeitig ausführen (und das Limit ist viel niedriger als erwartet) oder Sie haben möglicherweise Probleme (wie Einfrieren und Neustart des Computers). Ihnen geht der Speicher aus.
Letzteres habe ich erlebt (mit aktivierter Auslagerungsdatei), wenn der Speicherplatz knapp wird. Ich hatte eine 120-Gig-Festplatte mit ~3 freien Gigs. Beim Spielen von Civilization IV (einem großen Vollbildspiel) ging dem System der Festplattenspeicher aus (ca. 50 MB frei) und das Fenster „Apps jetzt beenden“ wurde angezeigt. Dies versteckte sich hinter dem Vollbildspiel, sodass das System einfach abstürzte. Wenn ich nicht in der Lage gewesen wäre, mich von einem anderen Mac aus einzuloggen, um mehrere Apps aus der Ferne zu beenden, hätte ich den Netzschalter gedrückt halten müssen.
Sie haben zwei großartige Antworten, die erklären, warum dies in fast allen Fällen, in denen das System auf ein Speichergerät schreiben kann, eine schlechte Idee ist.
Der Grund, warum Sie Swap deaktivieren können, ist, dass das System auf schreibgeschützten Medien wie einer CD, DVD, einem gesperrten Netzwerk-Image mit NetBoot oder einem schreibgeschützten USB-Fob wie dem neuen Lion-Installationsprogramm oder einem Wiederherstellungs-Fob ausgeführt werden kann, der mit einigen Macs ohne optisches Gerät geliefert wird fährt.
Virtueller Speicher bedeutet, dass das System wesentlich schneller laufen und weniger RAM verwenden kann, wenn viele Programme denselben gemeinsamen Bibliothekscode verwenden. Jedes Programm denkt , dass es eine private Kopie des gesamten Codes hat, den es benötigt, aber wenn virtueller Speicher vorhanden ist, hat das System eine nette Möglichkeit, denselben physischen RAM verschiedenen Programmen zuzuordnen.
Durch das Deaktivieren von Swap wird verhindert, dass der Mac einen winzigen Teil Ihres Laufwerks als Cache für einen berechneten Speicher verwendet, aber das Programm war nicht intelligent genug, um diese Ergebnisse selbst in einen richtigen Cache zu schreiben.
Wenn Sie ein Backup und Zeit zum Experimentieren haben, warum schalten Sie es nicht aus und sehen, wie sich Ihre Erfahrung ändert?
Ich würde meinen Swap behalten, selbst wenn ich sicher wüsste, dass ich jährlich für ein neues Laufwerk bezahlen müsste. Die Geschwindigkeit, die mir der Swap gibt, ist RIESIG. Dies ist nicht immer so, und manchmal, wenn das System thrasht oder blättert, kann das Gegenteil der Fall sein. Viele Leute entscheiden sich dafür, ohne Swap zu laufen, damit sie einen Speicherzuweisungsfehler erhalten, anstatt ihren Mac mit dem Paging beginnen zu lassen, da dies eine Maschine verlangsamen kann, wenn die Dinge nicht reibungslos laufen.
Ihr Fall mit einer SSD könnte anders sein, also lassen Sie es uns wissen, wenn Sie es versuchen.
dynamic_pager
, zwölf Sekunden ohne. Für einen breiteren und gemesseneren Vergleich könnten wir die Phoronix Test Suite oder Geekbench verwenden .Ich werde hier der Neinsager sein: Ich habe Swap auf meinem späten 2008er Unibody Macbook Pro deaktiviert und es hat die Leistung merklich verbessert: Weniger Wartezeiten, schnellerer Wechsel zwischen Anwendungen.
Wohlgemerkt, ich behalte meinen freien Speicher im Auge und habe 6GB verbaut. Die paar Male, wo ich das Speicherlimit erreichte, stürzte das System ab :-D
Auf meinem neuen MacBook Air würde ich nicht im Traum daran denken, Swap zu deaktivieren, es ist bereits schnell, wenn es aktiviert ist, und es hat zunächst nur 4 GB.
Ein weiterer guter Grund, warum Leute Swap auf einer SSD deaktivieren, ist, dass sie winzige SSDs bekommen und den ganzen Platz brauchen, den sie bekommen können. Mach es auf keinen Fall.
Meine Erfahrung ist ähnlich wie die von w00t. Ich habe die Auslagerungsdatei auf SL und Lion deaktiviert, weil die Leistungssteigerung für mich funktioniert. Die kabelgebundene Nutzung gerät nach ungefähr einer Woche außer Kontrolle, aber ein einfacher Neustart behebt das. Ich habe keine SSD, sondern eine langsame 5400rpm-Festplatte. Die Lebensdauer von SSDs ist jedoch nicht so schlecht, wie die Leute versuchen, sie darzustellen. Wenn Sie es einfach tun, weil Sie Angst haben, Ihre SSD zu verschleißen, lesen Sie bitte: http://www.anandtech.com/show/4159/ocz-vertex-3-pro-preview-the-first-sf2500- ssd/2 und http://communities.intel.com/thread/21717?tstart=0 Intel bewertet seine Laufwerke mit über 20 GB pro Tag, jeden Tag, für bis zu 5 Jahre auf einem 80-GB-Laufwerk. Größere Laufwerke halten sogar noch länger. Der durchschnittliche Benutzer verwendet nicht einmal 10 GB/Tag.
Ich überwache meine 4-GB-Speichernutzung mit iStat-Menüs und verwende ein Automator-Skript mit dem Bash-Befehl „purge“ (erfordert die Installation von Xcode), um inaktiven Speicher zu löschen und häufig mehr freien Speicher zu öffnen. Die wenigen Male, bei denen Apps mit Speicherlecks den gesamten Arbeitsspeicher belegten, musste ich einen Hard-Reset durchführen. Die seltenen Fälle, in denen das passiert, und die Geschwindigkeit im Allgemeinen machen es lohnenswert, die Auslagerungsdatei für mich deaktiviert zu lassen. Mir ist klar, dass ich aus diesem Grund nicht so viele Apps gleichzeitig öffnen kann, wie von anderen angegeben, aber ich kann damit arbeiten.
Werfen Sie nur meine 2 Cent für diejenigen ein, die Swap WEGEN kleiner SSDs deaktivieren möchten: Das Sleepimage benötigt viel mehr Speicherplatz.
Und für diejenigen, die sich Sorgen über die begrenzte Lebensdauer der SSD machen (insbesondere diejenigen mit MBAs und fest verdrahteten SSD-Chips, die NICHT ersetzt werden können), kann das Neuschreiben des Ruhebilds ein Problem sein, wenn Ihr Computer viele Male am Tag in den Ruhezustand versetzt wird. Mein Laptop schläft problemlos ein halbes Dutzend Mal am Tag. Das schreibt täglich 48 GB Daten auf meine SSD.
Die Lösung besteht in jedem Fall darin, den Ruhezustand zu deaktivieren und dann die sleepimage-Datei zu löschen, die so groß ist wie Ihr installierter RAM (in meinem Fall 8 GB).
Das Nachteilsrisiko: Wenn Ihr Akku leer ist, während Ihr Laptop schläft, geht Ihr aktueller Zustand verloren. Dies entspricht einem erzwungenen harten Neustart. Keine physische Beschädigung des Laptops, nur ein Produktivitätsverlust. Wenn Sie den Ruhezustand deaktivieren, der Akku leer ist und nicht aufgeladen werden kann, halten Sie einfach den Code bereit, um den Ruhezustand zu aktivieren!
Um den Ruhezustand zu deaktivieren, lautet der Befehl im Terminal wie folgt:
sudo pmset -a hibernatemode 0
Um den Ruhezustand zu aktivieren, lautet der Befehl wie folgt:
sudo pmset -a hibernatemode 3
So löschen Sie das letzte Sleepimage, um SSD/HDD-Speicherplatz freizugeben (macht nur Sinn, wenn Sie den Ruhezustand ausschalten, sonst belegt ein neues diesen Speicherplatz, wenn Ihr Computure das nächste Mal in den Ruhezustand versetzt wird):
sudo rm -rf /var/vm/sleepimage
Quelle: man pmset
Das Deaktivieren von Swap erhöht die Leistung. Zum Beispiel verwende ich regelmäßig Aperture und wenn der Swap wächst, verschlechtert sich die Leistung und wenn er über 1 GB hinausgeht, muss ich das Betriebssystem neu starten, um es zu bereinigen und die Leistung wiederherzustellen. Hinweis: Die Maschine hat 6 GB RAM und NICHT alles ist belegt, etwa 3 GB sind frei, aber 1 GB Swap beeinträchtigt die Leistung erheblich.
Ich habe Swap seit vielen Jahren auf Maschinen deaktiviert, sowohl unter OS X als auch unter anderen UNIX-Varianten.
Ich verwende ein Tool, das mich benachrichtigt, wenn der Speicher knapp wird, und mache mir nie Sorgen, dass mein System abstürzt.
Mein iMac hat 12 GB, und mit deaktiviertem Swap habe ich fast immer 4 GB frei, selbst wenn mehrere Entwicklungstools, Apps, Browser usw. geöffnet sind
Der Hauptgrund für die Deaktivierung der Auslagerungsdatei ist nicht die Geschwindigkeit, sondern der Speicherplatz.
Wenn man ein Benutzer ist, der routinemäßig innerhalb von 5 GB eines vollen Laufwerks läuft, wird das Deaktivieren von Swap das ständige Nörgeln von Platzmangel stoppen; Ich lande routinemäßig mit einer Auslagerungsdatei von mehr als 4 GB aus dem routinemäßigen Surfen.
Die Geschwindigkeitsverbesserung ist bei älteren Maschinen erstaunlich; Es ist nicht so beeindruckend auf modernen Maschinen mit SSD. (Unter OSX 10.0 auf einem iMac halbierte die Verwendung des virtuellen Speichers die Geschwindigkeit vieler Vorgänge, einschließlich des Kopierens von Dateien zwischen Laufwerken).
Das sich wiederholende Muster hier ist dieses:
Diejenigen, die die Auslagerungsdatei deaktiviert haben, erlebten eine verbesserte Leistung (mit ausreichend physischem RAM)
Diejenigen, die den Swap Space NICHT deaktiviert haben, sind sich sicher, dass es nicht funktionieren wird und etwas Schreckliches passieren wird, und raten Ihnen dringend, dies nicht zu tun.
Das liegt einfach an zwei Dingen:
Nur eine persönliche Erfahrung.
Memory Amount |
4 GB | Don't disable it, Mountain Lion itself boots with about 1 GB.
8 GB | Do if you don't run apps that requires more than 1 GB of memory, in short, virtualization software, Photoshop, and stuff.
16 GB or more | Do it! Even Xcode or Final Cut won't use more than 4 GB of memory, at least as I've seen. Just don't run too many virtual machines though.
Ein kurzer Hinweis: Wenn Ihr Mac integrierte Grafik verwendet, wird sein Speicher mit kernel_task mit Ihrem Hauptspeicher geteilt. Daher müssen Sie diesen Betrag von Ihrem gesamten nutzbaren Betrag abziehen.
SSD-Benutzer, es ist befriedigend, mehr Speicherplatz zu haben, aber es ist wichtig zu wissen, dass virtueller Speicher auf SSDs gedeiht, Sie können eine ganze Menge Leistungsgewinn daraus ziehen. Schadet es der SSD? Ja, aber Sie werden Ihren Mac lange ersetzen, bevor Sie es bemerken.
Ein Auslagerungsbereich (Auslagerungspartition, Auslagerungsdatei oder Auslagerungsdatei genannt) ist nur ein Mechanismus, um den vom Betriebssystem adressierbaren physischen Speicher zu erweitern.
Wenn Sie wenig verfügbaren physischen RAM haben und auf dem heutigen Computer, würde ich sagen, wenn Sie 4 GB oder weniger RAM haben. Dann solltest du wohl tauschen. Dies hängt jedoch von Ihrer Arbeitsbelastung und der Verwendung Ihrer Maschine ab.
Wenn Sie über mehr als 4 GB RAM verfügen, besteht eine gute Chance, dass Ihr System den Swap möglicherweise nie verwendet. Wenn also der Swap aktiviert ist oder nicht, ändert sich nicht viel.
Obwohl dies von anderen Faktoren abhängt, je länger Ihr Computer läuft, desto wahrscheinlicher wird das Betriebssystem einen kleinen ungenutzten Teil des RAM in den Swap verschieben, obwohl anscheinend noch viel Platz übrig ist. Oft verwendet das System jedoch den "freien" RAM für Dateipuffer und andere Dinge, und einige Arbeitslasten können dazu führen, dass Ihr Dateipuffer den gesamten verfügbaren RAM verwendet.
Was würde passieren, wenn Sie den Swap deaktivieren und Ihr Speicher vollständig belegt ist? Nun, wenn eine Anwendung das nächste Mal mehr Speicher anfordert (wie mit malloc oder realloc), erhält sie einen Fehler! Wenn es richtig codiert ist, wird die Anwendung es erkennen, aber einen solchen Fehler zu behandeln und das Programm ordnungsgemäß zu beenden, könnte immer noch eine Herausforderung sein! Viele Entwickler testen jedoch nicht auf erfolgreiche Speicherzuweisung und oft stürzt die Anwendung ab, sobald dieser nicht zugewiesene Speicher verwendet wird. Es besteht also eine hohe Wahrscheinlichkeit, dass die Anwendung abstürzt, und tatsächlich werden so viele Anwendungen abstürzen, weil normalerweise mehr als eine Anwendung gleichzeitig ausgeführt wird. Hoffentlich sollte der Kernel selbst immun sein, aber meiner Erfahrung nach war das nicht immer der Fall.
Wenn Sie Swap haben, haben Sie das gleiche Verhalten , aber Sie haben ein höheres Limit, so dass Sie dieses Limit wahrscheinlich nicht erreichen werden.
Ich habe persönlich 2 Maschinen mit 8 und 16 GB RAM. Meine persönliche Nutzung dieser Maschinen sollte mich niemals dazu bringen, all diesen Arbeitsspeicher zu verwenden (heute! vielleicht in ein paar Jahren könnte das anders sein). Der einzige Grund, warum ich die physischen RAM-Grenzen erreichen würde, ist, dass ein Prozess abtrünnig wurde und den gesamten RAM verbraucht. Kein Swap zu haben, ist eine Erleichterung, der Kernel wird den Rogue-Prozess sofort beenden, sobald er die RAM-Grenze erreicht. Wenn Sie Swap haben, werden Sie eine schmerzhafte Erfahrung machen (vielleicht nicht auf SSD ...), da Ihr System tauscht und tauscht und tauscht und manchmal völlig nicht mehr reagiert, bis hoffentlich Ihr Kernel den Übeltäter tötet!
Sie sollten keine Angst davor haben, dass Leute Ihnen sagen, dass etwas schreckliches passieren könnte, wenn Sie Swap entfernen. Wenn Sie dies tun, wird Ihr physischer Adressraum reduziert, ähnlich wie wenn Sie von 4 GB RAM auf 2 GB wechseln würden. Würdest du so etwas tun? Dann sollten Sie den Swap nicht entfernen. Sie können sich jedoch entscheiden, es zu begrenzen, und das wäre klug .
Wenn man glaubt, dass seine Arbeitslast dazu führen könnte, dass er fast oder mehr als den verfügbaren physischen RAM verwendet, oder wenn man viel I/O (Lesen/Schreiben auf Festplatten) benötigt, sollte Swap beibehalten werden.
Wenn Swap beibehalten werden soll, sollte ein Benutzer versuchen, die Menge an Speicher zu begrenzen, die ein Prozess verwenden kann. Auf einem Linux-System könnte man cgroups-Speichergrenzen verwenden, um zu vermeiden, dass ein Prozess außer Kontrolle gerät, ich kenne das Äquivalent auf OS X nicht, aber das sollte der Weg sein.
Wenn jedoch jemand mehr als genug verfügbaren Arbeitsspeicher für seine Arbeitslast hat, kann er Swap sicher deaktivieren oder ihn behalten. Auch in Bezug auf die Leistung wird sich nicht viel ändern, denn wenn das System den Swap nicht verwendet, werden Sie nicht von einem Leistungsabfall betroffen (besonders sichtbar bei einer alten Rotationsfestplatte, weniger bei SSD).
Die Verwendung des gleichen Tricks wie oben, um zu versuchen, Speichergrenzen pro Prozess oder Gruppe von Prozessen festzulegen, ist auch im Fall von mehr als genug verfügbarem RAM von Vorteil.
Ich habe einen alten PC mit 1 GB RAM, dort habe ich einen großen Swap: 4 GB, damit ich Firefox und andere Anwendungen darauf ausführen kann. Ich neige jedoch dazu, so wenig Anwendung (oder Registerkarten in Firefox) wie möglich zu verwenden, um eine korrekte Benutzererfahrung zu haben.
Ich habe einen kleinen Server mit 8 GB RAM. Dort kenne ich meine Arbeitslast genau und möchte nicht, dass mein Server langsamer wird, weil ein Prozess abtrünnig wird und den gesamten Speicher verbraucht. Dort habe ich keine Swap- und Cgroup-Speicherbegrenzung, die eine Barriere erzwingt, sodass Anwendungen oder Dienste abstürzen können, aber nicht der Kernel. Übrigens, das ist eine Linux-Maschine.
Dann habe ich meinen Mac mit 16 GB RAM. Ich bin nicht der einzige Benutzer davon, und wir hätten nichts dagegen zu warten, wenn wir den Benutzer wechseln. Da haben wir Swap, es ist schwierig für mich, die Arbeitsbelastung anderer Benutzer dieses Computers zu planen. Selbst wenn ich der einzige wäre, würde ich Swap verwenden. Ich führe oft mehrere VMs aus und verwende speicherintensive Anwendungen, aber nicht alle gleichzeitig, daher würde es mir nichts ausmachen, wenn das Betriebssystem in einer nicht verwendeten App ausgetauscht wird, damit ich schnellere Festplatten-E/A erhalten oder eine weitere VM starten kann. Obwohl ich diese Maschine bis jetzt noch nicht tauschen gesehen habe!
Ich habe gerade die Auslagerungsdatei auf meinem Macbook Air 2011 (4 GB RAM, 128 GB SSD) deaktiviert, weil ich es satt hatte, dass die Auslagerungsdatei langsam meinen gesamten verbleibenden HD-Speicherplatz auffrisst und dann neu starten musste. Auf diese Weise ist die Idee, dass ich einfach weniger Programme ausführen werde.
Ich werde sehen, ob das wirklich funktioniert, oder ob ich sowieso neu starten muss, um den "Wired"-Speicher zu löschen, aber im Moment scheint es gut zu funktionieren. Das eine Mal, als der Speicher wirklich voll war, verlangsamte sich der Computer genauso stark wie wenn meiner SSD der Speicher ausgeht - aber er erholte sich viel schneller, sobald ich Anwendungen beendete. (Und ich konnte tatsächlich Anwendungen beenden, was ich normalerweise nicht bin, wenn die SSD voll ist).
Ich werde sehen, wie es in Bezug auf die Stabilität läuft, aber bisher bin ich ein glücklicher Camper. Es zwingt mich auch, weniger Anwendungen (und Chrome-Tabs) gleichzeitig auszuführen, was für die Konzentration auf Aufgaben gut ist.
Einige sagen: Das Deaktivieren von Swap verbessert die Leistung .
Das ist wahr. Jede Verwendung von virtuellem Speicher ist eine große Verlangsamung – selbst eine schnelle SSD ist tausendmal langsamer als DRAM ; eine Festplatte mehr wie eine Million Mal langsamer. Sie benötigen nur einen kleinen Bruchteil der Speicherzugriffe, um in den Swap zu gehen, um einen großen Unterschied in der Laufzeit zu machen. Wenn zB 0,1% der Zugriffe auf deine schnelle SSD gehen, halbiert das theoretisch deine Geschwindigkeit. Multitasking verbirgt dies jedoch – während Sie auf Ihr Wechselgerät warten, kann die CPU mit etwas anderem beschäftigt sein. Solange Sie also über ein angemessenes Maß an Multitasking verfügen, damit etwas betriebsbereit ist, wenn Sie einen Seitenfehler haben, ist der Leistungsverlust nicht so extrem. Zu viel Zeug mit hohen Speicheranforderungen, das gleichzeitig ausgeführt wird, führt zu Thrashing : Swap-Aktivität dominiert die Leistung.
Aber: ohne Swap, wenn Ihnen der physische Speicher ausgeht, ist das wie gegen eine Wand zu laufen. Möglicherweise können Sie schneller sprinten, wenn Sie Ihr Gewicht etwas reduzieren, indem Sie keine Brille tragen; Die Logik wird nicht besser, wenn Sie eine wirklich schwere Brille haben ...
Benutzer10355
orange80
Ken
Benutzer28722
Graham Perrin
Qian Chen