Dynamic_Pager des Mac deaktivieren?

Dynamic_Pager des Mac deaktivieren?

Ich habe diesen Blog-Beitrag über die Speicherverwaltung in Mac OS X gelesen:http://workstuff.tumblr.com/post/20464780085/something-is-deeply-broken-in-os-x-memory-management

Ich würde gern Ihre Meinung zu dieser Angelegenheit hören.

Ich habe „nur“ 4 GB Speicher, daher besteht die Möglichkeit einer Kernel-Panic.

Ich habe eine rotierende Festplatte (im Gegensatz zu einer SSD) und sehe gelegentlich Strandbälle, manchmal starte ich sogar meine externe Festplatte, bevor ich fortfahre.

Aktivitätsmonitor-Bildschirm

Es heißt, dass im Moment kein Swap verwendet wird. Bedeutet das, dass das Deaktivieren von dynamic_pager nichts bewirkt? Es gibt einige Page-Ins.

Wie sicher ist es, es einfach auszuprobieren? Ich könnte vielleicht ein Skript schreiben, das den Pager wieder aktiviert, wenn der Speicher knapp wird?

[Update]: Ende des Tages, 26 MB Swap, viel mehr Seitenein- und -ausgänge und viel inaktiver Speicher.

Antwort1

OS X hat drei Probleme, die dazu beitragen:

  1. Standardmäßig werden alle Daten, die auf die Festplatte geschrieben oder von ihr gelesen werden, mit höherer Priorität im RAM zwischengespeichert als aktuelle Programmdaten. Anwendungen können dies mit der F_NOCACHEOption auf Deskriptorbasis deaktivieren fcntl(), aber nur wenige tun dies. Infolgedessen führt eine hohe Festplattenaktivität dazu, dass Speicher, der gerade nicht verwendet wird, ausgelagert wird. Dies führt zu mehr Festplattenaktivität sowohl für das Auslagern als auch für das spätere Wiedereinlesen dieses Speichers, zusätzlich zur ursprünglichen Festplattenaktivität.

  2. HFS+ kann mit gleichzeitigem Dateizugriff nicht gut umgehen. Insbesondere das gleichzeitige Öffnen und Schließen vieler verschiedener Dateien führt zu enormen Konflikten, und es kann praktisch immer nur ein Öffnen/Schließen gleichzeitig erfolgen.

  3. Viele OS X-Anwendungen verteilen ihren Festplattenzugriff auf viele kleine Dateien.

Wenn also zwei oder mehr Anwendungen gleichzeitig auf viele Dateien zugreifen, steigt die E/A-Last der Festplatte exponentiell an, da die Swap-Aktivität mit den Anwendungen um E/A konkurriert.

Das Deaktivieren des dynamischen Pagers könnte den frühen Teil dieser Exponentialkurve verhindern, indem die Möglichkeit entfernt wird, private/schmutzige Anwendungsseiten auf die Festplatte zu übertragen. Stattdessen wird das System wahrscheinlich Seiten aus öffentlichen/sauber zugeordneten Dateien (ausführbare Dateien, Bibliotheken usw.) und aus den zwischengespeicherten Dateidaten bereinigen, die wahrscheinlich von vornherein nicht zwischengespeichert werden sollten. Ob dies die Leistung tatsächlich verbessert, hängt stark davon ab, welche Anwendungen Sie verwenden. Safari ist beispielsweise extrem schlecht darin, seine Festplatten-E/A zu verwalten, daher könnte dies meiner Meinung nach hilfreich sein.

Das Problem würde auftreten, wenn der benötigte RAM tatsächlich den verfügbaren übersteigt: Ein Panikabsturz ist ein sehr abruptes Ende für Ihren Tag. Aber wenn Sie keine großen Dateien bearbeiten oder andere Dinge tun, die von Natur aus speicherintensiv sind, könnte dies selten genug vorkommen, um ein Risiko einzugehen.

Übrigens können Sie mit dem lsofBefehl sehen, welche Dateien von welchen Prozessen geöffnet werden, und mit dem fs_usageBefehl können Sie ein laufendes Protokoll der Dateivorgänge anzeigen. Beide funktionieren besser, wenn Sie sie als Root oder über ausführen sudo.

verwandte Informationen