Frage Über den Speichercache von Linux


Ich führe ein Python-Skript, um einige Statistiken zu machen und der tatsächlich verwendete Speicher ist niedrig, etwa 10%. Und kein anderer Prozess kostet mehr Speicher. Allerdings, wenn ich benutze free -m und es zeigt, dass fast 95% Speicher verwendet worden ist. Der Punkt ist, dass mein Skript viel von Dateien lesen sollte, also frage ich mich, ob es einen Mechanismus von Linux-Speichercache gibt, der das Problem verursachte?echo 1 >> /proc/sys/vm/drop_caches funktioniert, aber es scheint manuell.Wie kann ich die Speicherkosten reduzieren und macht keinen schlechten Effekt auf das Lesen von Dateien?


4
2017-09-28 07:05


Ursprung




Antworten:


Der Linux-Kernel speichert automatisch Dateien im Speicher für Effizienz. Das ist keine schlechte Sache. Beim Laufen free -m Sie sehen auf der rechten Seite die Menge des im Cache verwendeten Speichers. Wenn eine Anwendung den Speicher benötigt, wird der Kernel einen Teil des Cache freigeben. Sie sollten es nicht selbst versuchen und verwalten.


7
2017-09-28 07:17





Ich glaube nicht, dass Sie hier ein Problem haben.

Warum interessiert es dich, wie viel Speicher insgesamt verwendet wird? Tut es irgendwas weh?

Linux versucht, Ihren Speicher so effizient wie möglich zu nutzen. Wenn Sie viel freien Speicher haben und viele Dateien lesen, wird der freie Speicher verwendet, um diese Dateien zwischenzuspeichern. Wenn Sie viel aktiven Speicher haben, wird viel weniger Speicher für das Caching benötigt. So soll es funktionieren. Wenn Sie nicht möchten, dass der Speicher überhaupt verwendet wird, nehmen Sie die Chips aus Ihrem Computer.

Es gibt einige ungewöhnliche Fälle, in denen viel Caching schlecht sein kann. Vielleicht passiert der Lesestoß immer unmittelbar vor einem Burst der Speicherzuweisung. Vielleicht bedeutet etwas in Ihrem speziellen Fall, dass es keinen möglichen Nutzen gibt, und Sie müssen die letzten 0,1% Performance-Kosten herauspressen. Vielleicht sind Sie auf einem eingebetteten System, das RAM mit einer begrenzten Lebensdauer verwendet. Wenn Sie einen solchen Fall haben, sagen Sie uns, was es ist.


5
2017-09-28 07:14



Nun, eigentlich ist das Problem, dass das Skript nicht zu viel Speicher benötigt, fast 10%, und meine Maschine tut nichts anderes. Als ich die Daten in den Speicher eingelesen habe, bekam der Python einen MemoryError, der zeigte, dass nicht genug Speicher vorhanden war. - cheneydeng