So deaktivieren Sie den Festplatten-Cache in Yosemite

Mein MacBook friert ständig ein, weil der gesamte RAM (8 GB) verwendet wird. Der Festplatten-Cache scheint die Ursache zu sein. Der Befehl sudo purgehilft nur ein wenig. In einigen älteren Versionen von OS X funktionierte mein MacBook gut, weil es (gerade) genug RAM hatte, um Xcode (mit großem Projekt) auszuführen, ohne ständig zu wechseln.

Dies ist die Speichernutzung nach dem einmaligen Kompilieren meines Projekts. Die Speichernutzung von Xcode kann nach einigen Stunden der Nutzung um einige hundert MB anwachsen.

Geben Sie hier die Bildbeschreibung ein

Der Speicherdruck ist niedrig und 0 Swap, also glaube ich nicht, dass Ihnen der Speicher ausgeht
Die CPU-Auslastung war niedrig, als das System hängen blieb. Das Aufhängen korrelierte stark mit der Speichernutzung
Die hier gezeigte Speicherauslastung ist minimal und kein Problem
@keithyip Du hast in der Vergangenheit ein bisschen experimentiert , also was sind deine aktuellen vm_compressor-Einstellungen? Ist Ihr "Projekt" frei verfügbar (z. B. github), um einen Test damit durchzuführen?
@klanomath Ich habe es auf den Standardwert zurückgesetzt, 4. Ich habe versucht, den Kompressor zu deaktivieren, weil OS X in Spielen keine konstanten FPS aufrechterhalten konnte. Der einzige Nachteil war, dass OS X abstürzte, wenn nicht genügend RAM vorhanden war. Das Projekt ist die App meines Unternehmens. Es ist eine geschlossene Quelle. Eine einfache alternative Möglichkeit, Ihren Arbeitsspeicher zu belegen, indem Sie Chrome verwenden, ohne ihn für ein paar Tage zu beenden, oder versuchen Sie es mit memory_pressure.

Antworten (2)

Dies beantwortet Ihre Frage nicht direkt, da ich keine Möglichkeit kenne, den Datei-Cache-Mechanismus in OSX zu deaktivieren. Davon abgesehen fällt mir kein guter Grund ein, WARUM Sie dies überhaupt tun möchten? Was macht Sie so sicher, dass es am Dateicache liegt?

Der Datei-Cache ist eine dynamische Sache, da er größer wird, wenn Sie mehr I/O mit Ihrer Festplatte machen, aber gelöscht wird und schrumpft, sobald eine Anwendung RAM benötigt, um etwas zu erledigen. Was im Dateicache lebt, sind Kopien kürzlich verwendeter Dateien mit der Idee, dass, wenn Sie sie kurz danach wieder benötigen, die E / A viel schneller ist, da sie sich bereits im RAM befinden. Während dies der RAM-Cache-Funktion des älteren MacOS ähnelt, besteht der große Unterschied hier darin, dass es vollständig dynamisch ist und wächst, um ungenutzten RAM in Ihrem System zu nutzen, und schrumpft, sobald ALLES RAM benötigt. Mit anderen Worten, es sperrt Ihren Speicher nicht und sollte nicht die Ursache für Verlangsamungen auf Ihrem Mac sein.

Abgesehen davon gibt es ein gewisses Gleichgewicht zwischen der Art und Weise, wie OSX Ihren Arbeitsspeicher verwaltet. Ich habe gesehen, dass es kleine Verzögerungen gibt, wenn Dinge in den "komprimierten" Zustand ein- und ausgehen, und im Allgemeinen ist die Idee, dass etwas einmal komprimiert wird, es dort bleibt, bis es einen wirklichen Bedarf gibt. Die größere Ursache für eine Verzögerung wäre, wenn Sie Swap verwenden, da dies die langsamste Form von Speicher ist, aber Ihr Screenshot zeigt sogar 0 Bytes für Swap an. Abgesehen von der Komprimierung und dem Austauschen wäre ich nicht überrascht, wenn es zu einem gewissen Overhead und Verzögerungen kommt, wenn Sie all dies verschieben, wenn Ihr gesamter RAM verwendet wird. Die Frage könnte sich jedoch eher darum drehen, welche Anwendungen in dieser Situation einfrieren. Vielleicht ist sogar Ihre Festplatte fast voll und Sie

Im Allgemeinen haben Sie möglicherweise einen kurzfristigen Vorteil, wenn Sie den Datei-Cache löschen oder deaktivieren, aber ich würde vermuten, dass dies Ihre Leistung tatsächlich beeinträchtigen würde , da Sie nicht von einem Dateisystem-Cache profitieren würden.

"sudo purge" war sehr langsam (in der Größenordnung von Minuten), daher schätze ich, dass das Problem die schlechte Leistung bei der Verwaltung des Festplatten-Cache war. Alle Hängeprobleme traten nach dem OS X-Update mit neuer Speicherverwaltung auf. Als sie auftraten, korrelierten sie stark mit der Speichernutzung bei 7,99 GB. Das Einfrieren war systemweit. Xcode und Safari reagierten weiterhin nicht. Der kleine Choke war auch schlecht, aber weniger problematisch und war eine andere Geschichte. Als Referenz, mein freier Speicherplatz beträgt 80 GB. Die abgeleiteten Daten meines Projekts sind 6 GB groß. Die alte Speicherverwaltung konnte damit sehr gut arbeiten. Kein kleines Würgen, kein großes Einfrieren.
Das wäre hilfreich, wenn jemand Befehle zum Deaktivieren des Festplatten-Cache zum Testen bereitstellen könnte. Die neue Speicherverwaltung ist für alte Mac-Geräte ein Witz (oder eine Geschäftsstrategie?).
@keithyip, ich habe eigentlich die RAM-Leistung unter 10.8 im Vergleich zu dem, was jetzt unter der Haube in 10.9 vor sich geht, bevorzugt (kann nicht auf 10.10 aktualisiert werden, da Apple die Smartcard-Handhabung verfälscht). Ich bemerke definitiv hier und da Pausen, die meiner Meinung nach die Analyse und Freigabe von Teilen von In-Memory-Apps sind, die als gültig zum Entladen erachtet werden. Vielleicht ist hier irgendwo der Grund, warum die neueste Apple-Codierungsrichtung versucht, sich nicht mehr auf den Garbage Collector von ObjC zu verlassen?
@keithyip & bjb - Ich stimme zu, die Speicherverwaltung war in Mavericks großartig ... bis Sie sich Ihrem tatsächlichen RAM näherten, war es miserabel. Meine Lösung war, weitere 16 GB einzubauen - also habe ich keine Ahnung, wie Yosemite damit umgeht, da ich nie mehr dorthin komme :(
Ich verwende ein 2011 Macbook Pro. Leider muss ich OS X ständig aktualisieren, weil Xcode das neueste OS X benötigt. Es lohnt sich nicht, den Arbeitsspeicher zu aktualisieren, also suche ich nach Software-Fixes.

Wenn sudo purgedas nicht geholfen hat, versuchen Sie, den dynamischen Pager zu deaktivieren, z

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Warnung: Dadurch wird die Paging-Fähigkeit von Mac OS X vollständig deaktiviert. Verwenden Sie sie daher nur, wenn Sie über eine große Menge RAM verfügen, Ihr Mac jedoch immer noch Auslagerungsdateien verwendet. Wenn Ihr System über einen SIP-Schutz verfügt, müssen Sie ihn zuerst deaktivieren (nicht empfohlen).

Sie können Auslagerungsdateien auch manuell aus entfernen /private/var/vm/, z

sudo rm -f /private/var/vm/swapfile*

Starten Sie dann den Computer neu.

Quelle: Mac Virtual Memory – Was es ist, der Swap-Speicherort und wie man Swap deaktiviert


Um das Auslagern des Speichers vollständig zu deaktivieren, stellen Sie vm_compressores auf 1, z

sudo nvram boot-args="vm_compressor=2"

4oder auf Standard setzen , siehe die anderen Werte (von vm_pageout.h):

#define VM_PAGER_DEFAULT                0x1 /* Use default pager. */
#define VM_PAGER_COMPRESSOR_NO_SWAP         0x2 /* In-core compressor only. */
#define VM_PAGER_COMPRESSOR_WITH_SWAP           0x4 /* In-core compressor + swap backend. */
#define VM_PAGER_FREEZER_DEFAULT            0x8 /* Freezer backed by default pager.*/
#define VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP     0x10    /* Freezer backed by in-core compressor only i.e. frozen data remain in-core compressed.*/
#define VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP       0x20    /* Freezer backed by in-core compressor with swap support too.*/

Um Ihren aktuellen Wert zu überprüfen, führen Sie Folgendes aus:

sysctl vm.compressor_mode

Um zum Normalzustand zurückzukehren, löschen Sie die Boot-Argumente wie folgt:

sudo nvram -d boot-args

Starten Sie Ihr NVRAM neu und setzen Sie es zurück .

Siehe: vm_compressor=VM_PAGER_DEFAULT in Yosemite verursachte ein Einfrieren, wenn der physische Speicher voll war