Estoy ejecutando un script de Python para hacer algunas estadísticas y la memoria realmente utilizada es baja, alrededor del 10%. Y ningún otro proceso cuesta más memoria. Sin embargo, cuando lo uso, free -m
muestra que se ha utilizado casi el 95% de la memoria. El punto es que mi script debería leer mucho archivos, así que me pregunto si hay algún mecanismo de memoria caché de Linux que haya causado el problema. echo 1 >> /proc/sys/vm/drop_caches
Funciona, pero parece manual. ¿Cómo puedo reducir el costo de la memoria y no tener un efecto negativo en la lectura de archivos?
Respuesta1
El kernel de Linux almacena automáticamente en caché los archivos en la memoria para mayor eficiencia. Esto no es algo malo. Al ejecutar free -m
verás a la derecha la cantidad de memoria utilizada en el caché. Si una aplicación necesita memoria, el kernel liberará parte del caché. No deberías intentar gestionarlo tú mismo.
Respuesta2
No creo que tengas un problema real aquí.
¿Por qué le importa cuánta memoria total se utiliza? ¿Le duele algo?
Linux intenta utilizar su memoria de la manera más eficiente posible. Si tienes toneladas de memoria libre y estás leyendo muchos archivos, usará la memoria libre para almacenar en caché esos archivos. Si tiene toneladas de memoria activa, utilizará mucha menos memoria para el almacenamiento en caché. Así es como se supone que funciona. Si no desea que se utilice la memoria en absoluto, retire los chips de su computadora.
Hay algunos casos poco comunes en los que una gran cantidad de almacenamiento en caché puede resultar perjudicial. Quizás la ráfaga de lectura siempre ocurra justo antes de una ráfaga de asignación de memoria. Tal vez algo en su caso específico signifique que no hay ningún beneficio posible y necesita exprimir ese último costo de rendimiento del 0,1%. Quizás esté en un sistema integrado que utiliza RAM con una vida útil limitada. Si tienes un caso así, cuéntanos cuál es.