Ich habe einen Prozess, der Tausende von kleinen Dateien einmal liest. Die zwischengespeicherten Daten werden danach nicht benötigt. Der Prozess wird mit voller Geschwindigkeit ausgeführt, bis der meiste Speicher vom Dateicache belegt ist und dann langsamer wird. Ich verstehe die Verlangsamung nicht, da das Freigeben des Cache-Speichers und das Zuweisen von Speicherplatz für die nächste Datei eine Angelegenheit von Mikrosekunden sein sollte. Harte Seitenfehler erhöhen sich ebenfalls, wenn dieser Schwellenwert erreicht wird. Das Betriebssystem ist Vanilla Ubuntu 16.04.Stop-Datei-Caching für einen Prozess und seine Kinder
Ich möchte die Datei-Caching für diesen Prozess nur beschränken.
Dies ist ein Benutzerprozess. Daher ist die Verwendung eines privilegierten Shell-Befehls zum Löschen des Caches keine Lösung. Die Verwendung von fadvise auf Dateiebene ist keine Lösung, da die Dateien je nach Dateityp von mehreren Bibliotheksprogrammen gelesen werden.
Was ich brauche, ist eine Prozess-Level-Option: Cache nicht, oder setzen Sie eine niedrige Größenbeschränkung wie 100 MB. Ich habe danach gesucht und nichts gefunden. Ist das wirklich der Fall? Scheint wie etwas Großes, das fehlt.
Haben Sie einen Einblick in das offensichtliche Problem der Speicherverwaltung?
Wenn die Dateien/Puffer nicht verschmutzt sind, kostet das Caching nichts. Wann immer Speicher knapp wird, können die Puffer für andere Zwecke (entweder als Arbeitsspeicher oder für andere Puffer) ohne zusätzliche Kosten zurückgewonnen werden. – wildplasser