Die Grundidee hier ist wahrscheinlich nicht so schlecht (nur sehr naiv und irreführend): Es werden möglicherweise Dateien zwischengespeichert, auf die in naher Zukunft kaum zugegriffen werden kann, z. B. Protokolldateien. Diese "fressen" RAMs, die später bei Bedarf vom Betriebssystem auf die eine oder andere Weise freigegeben werden müssen.
Abhängig von Ihren Einstellungen für Austauschbarkeit, Dateizugriffsmuster, Speicherzuweisungsmuster und viele weitere unvorhersehbare Dinge kann es vorkommen, dass diese Caches, wenn Sie sie nicht freigeben, später erneut verwendet werden müssen, was etwas mehr Zeit in Anspruch nimmt als Zuweisen von Speicher aus dem Pool nicht verwendeter Speicher. Im schlimmsten Fall werden die Swap-Einstellungen von Linux dazu führen, dass der Programmspeicher ausgelagert wird, da Linux davon ausgeht, dass diese Dateien in naher Zukunft mit größerer Wahrscheinlichkeit verwendet werden als der Programmspeicher.
In meiner Umgebung schätzt Linux ziemlich oft, und zu Beginn der meisten europäischen Börsen (um 09:00 Uhr Ortszeit) werden Server Dinge tun, die sie nur einmal pro Tag tun, und müssen den Speicher austauschen, der zuvor aufgrund des Schreibens ausgelagert wurde Logfiles, Komprimieren, Kopieren usw. füllten den Cache bis zu dem Punkt, an dem Dinge ausgelagert werden mussten.
Aber ist das Löschen von Caches die Lösung für dieses Problem? definitiv nicht. Die Lösung wäre, Linux mitzuteilen, was es nicht weiß: Diese Dateien werden wahrscheinlich nicht mehr verwendet. Dies kann von der Schreibanwendung mit Dingen wie posix_fadvise()
oder mit einem cmd-Linientool wie vmtouch
(das auch verwendet werden kann, um Dinge zu untersuchen und Dateien zu zwischenspeichern) durchgeführt werden.
Auf diese Weise können Sie die Daten, die nicht mehr benötigt werden, aus den Caches entfernen und das Material behalten, das zwischengespeichert werden soll. Wenn Sie alle Caches löschen, muss eine Menge Material erneut von der Festplatte gelesen werden. Und das im schlimmsten Moment: wenn es gebraucht wird; Verzögerungen in Ihrer Anwendung verursachen, die spürbar und oft nicht akzeptabel sind.
Was Sie haben sollten, ist ein System, das Ihre Speicherverwendungsmuster überwacht (z. B. wenn sich etwas ändert) und dann entsprechend analysiert und entsprechend handelt. Die Lösung könnte darin bestehen, am Ende des Tages einige große Dateien mit vtouch zu entfernen. Es könnte auch sein, mehr RAM hinzuzufügen, da die tägliche Spitzenauslastung des Servers genau das ist.