Kann man das Dateisystem-Caching-Verhalten von Mac OS X / Darwin beeinflussen?

Ich habe folgendes Problem: Wenn ich Prozesse ausführe, die viel Speicher verbrauchen, scheint Mac OS X sich zu weigern, einen großen Teil des Dateisystem-Cache freizugeben:

Aktivitätsmonitor

Anstatt die ~ 30 GB inaktiven Speicher loszulassen, tauscht es lieber 45 GB aus (die zu dem im Bild festgehaltenen Zeitpunkt steigend waren).

Beim Ausführen purgewurde ein großer Teil dieses Speichers freigegeben, was zu ~ 15 GB freiem Speicher führte, und Mac OS X hörte endlich auf, mich mit diesem wirklich nutzlosen OOM-Dialog zu nerven, der mich aufforderte, eine meiner GUI-Anwendungen zu beenden …

Nutzloser OOM-Dialog

Gibt es eine Möglichkeit, den Kernel anzuweisen, weniger darauf zu bestehen, wenn es um das Zwischenspeichern von Datei-E/A geht?

Wenn Sie für einen Moment ignoriert haben, dass inaktiver Speicher anders als freier Speicher klassifiziert wurde, und beide als im "gebrauchsfertigen Pool" betrachteten, gibt es etwas Messbares, das Sie als Problem sehen, wie Programmladezeiten, Malloc-Fehler usw ??? Ein Neustart löscht die virtuellen Speichertabellen, und wenn Sie Programme öffnen, die RAM zuweisen, werden sie sofort bei "inaktiv" wegfressen, sodass dies für mich sicher kein Problem darstellt.
@bmike Wie gesagt ... Mac OS X stört mich ständig mit diesem OOM-Dialog (Bitte Anwendungen zum Schließen auswählen ...), auch das System reagierte teilweise nicht mehr (obwohl nicht alle CPU-Kerne verwendet wurden) und diese 45-GB-Auslagerungsdatei auf der Festplatte ärgert mich auch.
OOM-Dialog - vielleicht hilft es, das zu erweitern. Meine Vermutung ist, dass Sie mit 45 G Swap wirklich ein Problem mit undichtem Code und kein Problem mit dem Paging-Algorithmus haben. Wenn Sie das Paging-Zuweisungssystem ändern, werden Sie immer noch zusammenbrechen, nur auf andere Weise. Ich werde versuchen, dieses Wochenende Zeit zu finden, um eine angemessene Antwort zu geben, in der erklärt wird, wie ich dies angreifen würde, ohne das VM-System hacken zu müssen. Ich habe vermisst, wie tief das Problem bei meinem ersten Kommentar war. Haben Sie einen Fehler bei Apple gemeldet, wenn Sie dies bei Bedarf durchführen können? sysdiagnosesollte den Ingenieuren alles geben, was sie brauchen, um einen Tuning-Workaround zu empfehlen.
@bmike Dies ist der OOM-Dialog: photomics.org/IeWia1Ee_OOM.png - der Text ist ziemlich verwirrend, ich denke, was es bedeutet zu sagen, dass Mac OS X nicht mehr tauschen wird als jetzt (es gab immer noch Hunderte von GB frei auf meinem Startvolume). Der Text ist nur ein weiterer Beweis dafür, dass Macs nicht als Rechenmaschinen gedacht sind, da er nur meine speicherarmen GUI-Anwendungen auflistet, während meine Analysesoftware den gesamten Speicher verbraucht ...
Obwohl ich jahrelang Unternehmenssoftware wie OracleDB unter OS X ausgeführt habe und keine Probleme mit dem Kernel oder dem Speicher hatte, kann ich sehen, dass Sie sich aufregen und fühlen würden, dass es nicht geeignet ist, wenn es für Ihre Software nicht funktioniert. Wenn Sie jedoch genau hinsehen, benötigen Sie Speicherplatz auf Ihrem Boot-Volume-Dateisystem. Ich werde eine kurze Antwort ausarbeiten, falls dies hilft.

Antworten (1)

Es ist schwer zu sagen, ohne Zugriff auf Ihr System oder Schritte zum Reproduzieren Ihres Fehlers, aber meiner Erfahrung nach verhält sich das Betriebssystem wie jedes andere UNIX, wenn das Auslagerungsgerät und das Root-Dateisystem gefüllt sind. Der einfachste Weg, den Dialog zu vermeiden, besteht darin, sicherzustellen, dass Sie über genügend freien Speicherplatz verfügen, um eine weitere Auslagerungsdatei zu erstellen (sie sind bei Mountain Lion, glaube ich, bei 2 GB am höchsten).

Die meisten Leute möchten 25 % (oder mehr) freien Speicherplatz haben, da das Betriebssystem heiße Dateien und Defragmentierungen im laufenden Betrieb optimiert und diese selbst deaktiviert werden, wenn der freie Speicherplatz knapp wird, um zu vermeiden, dass das IO aufgewühlt wird, wenn kein Platz zum Schreiben oder viele frei sind Orte auf dem Laufwerk, die Sie für einen schnelleren Dateizugriff auswählen können.


Ein bemerkenswerter Unterschied zwischen OS X und anderen UNIX besteht darin, dass das Apple-Betriebssystem eine späte Seitenzuweisung zum Auslagern vornimmt, sodass Sie keine großen Auslagerungsdateien sehen, wenn sie nicht benötigt werden. Dazu können Sie den Swap entweder vollständig deaktivieren oder sicherstellen, dass Ihr Laufwerk über ausreichend freien Speicherplatz verfügt, um die Menge an Swaps zu verarbeiten, die Sie in der Praxis sehen.

Ich habe von niemandem gehört, der mit dem Paging-Algorithmus selbst herumgespielt hat, aber Apple hat diesen Teil des Betriebssystems als Open Source bereitgestellt, sodass jeder, der sich dafür interessiert, Änderungen auf Codeebene vornehmen und damit arbeiten kann.

Ich würde mit dem Kauf des nächstgrößten seitlichen Speicherlaufwerks beginnen und Ihre Speicherplatznutzung überwachen, um sicherzustellen, dass Sie als Faustregel nicht weniger als 10 GB leer bekommen. Wenn Sie ernsthafte Arbeit leisten, investieren Sie möglicherweise mehr in den Speicherplatz, um sicherzustellen, dass Sie nicht ausgehen.

Wie ich schon sagte ... Auf der Startdiskette waren Hunderte von GB freier Speicherplatz verfügbar. Bei 50 GB hat das Swappen einfach aufgehört. Ich würde jedoch nicht in Betracht ziehen, eine Lösung noch mehr auszutauschen, ich würde erwarten, dass das System den FS-Cache löscht und ihn für den Programmspeicher verwendet.
Hmm - scheint seltsam, dass eine Nachricht auftaucht. Ich hatte Maschinen mit viel mehr Swap. Hast du diesbezüglich einen Fehler bei Apple gemeldet? Es könnte etwas an einem bestimmten Build / bestimmten Chipsatz sein, das im Code falsch ist. Ich habe nicht gesehen, wie viel freien Platz Sie in der Frage hatten - vielleicht habe ich es aus dem Kommentar-Thread übersehen ...