Möglicherweise finden Sie die Antwort von John Nilsson auf meine Frage hilfreich, um den Cache zu leeren und zu testen, ob dies mit Ihrem Problem zusammenhängt:
sync && echo 1 > /proc/sys/vm/drop_caches
Obwohl ich vermute, dass der einzige wirkliche Unterschied 1 vs. 3 ist
Der Inhalt von /proc/meminfo sagen Ihnen, wofür der Kernel RAM verwendet.
Sie können /proc/sys/vm/vfs_cache_pressure verwenden um den Kernel dazu zu zwingen, Speicher, der für dateisystembezogene Caches verwendet wird, träge oder eifrig zurückzufordern.
Beachten Sie, dass Ihre Anwendung möglicherweise nur dann von der Optimierung dieses Parameters profitiert, wenn sie wenig oder keine Festplatten-E/A durchführt.
Sie können vfs_cache_pressure
erhöhen sowie swappiness
setzen bis 0
.
Wenn Sie dies tun, wird der Kernel den Cache schneller zurückfordern, während Prozesse gleich oder mehr bevorzugt werden, wenn sie entscheiden, was ausgelagert wird.
Sie dürfen nur Sie möchten dies tun, wenn Prozesse, die Ihnen wichtig sind, nur sehr wenig Festplatten-E/A ausführen.
Wenn ein Netzwerk-E/A-gebundener Prozess einwechseln muss, um Anforderungen zu bedienen, ist das ein Problem und die wirkliche Lösung besteht darin, ihn auf einen weniger wettbewerbsfähigen Server zu stellen.
Mit dem Standardwert swappiness
-Einstellung wird der Kernel fast immer bevorzugen, den FS-bezogenen Cache im realen Speicher zu behalten.
Wenn Sie also den Cache-Druck erhöhen, stellen Sie sicher, dass Sie swappiness
gleichermaßen anpassen .