Borrar memory caching en Amazon EC2

En nuestro proyecto, tenemos algunas testings que se ejecutan durante aproximadamente 3-4 horas de forma continua. A su debido time, las testings fallan ya que no pudieron encontrar suficiente memory. En Google, descubrí que ejecutar el siguiente command me ayuda a reanudar mis testings:

sync; echo 3 > /proc/sys/vm/drop_caches 

Sin embargo, estas son testings nocturnas y nos ayudaría mucho si podemos ejecutarlo sin intervención manual.

Solo estoy mirando las opciones para hacer esto.

Encontré algunos enlaces 1 y 2 que, por lo que parece, podrían ser útiles.

Solo quería saber mis otras opciones antes de poder continuar y actualizar las tabs cron.

¿Está bien limpiar el caching periódicamente? ¿Causará otros problemas?

¿Será útil boost la memory RAM? ¿Cuáles son mis alternativas?

¿Será útil boost la memory RAM?

Difícil de decir sin saber por qué tus testings tienen éxito luego de ejecutar esos dos commands ( sync y drop_caches ). TBH No creo que descartar el caching del sistema de files sea lo que permite que sus testings funcionen a less que sus testings fallen debido a problemas de latencia. Cuando el kernel nota que las cosas están debajo de min_free_kbytes , comienza a expulsar las inputs más antiguas de la memory caching para recuperar la memory realmente libre al less min_free_kbytes . La única exception a ese process es para las páginas marcadas como "sucias". Por lo tanto, la existencia de un caching de sistema de files generalmente no es un problema, a less que las aplicaciones estén asignando memory más rápido de lo que el kernel puede ubicar las inputs para podar (en cuyo caso topar min_free_kbytes está en order).

Probablemente, el command que más hace por ti es el command de sync que probablemente libera memory dedicada a los búferes utilizados para E / S de disco asíncrona (además de eliminar las dirty de todas las inputs en el caching del sistema de files, haciéndolas candidatas para desalojo en poca memory) condiciones).

Puse las probabilidades en aproximadamente 80-90% de que sería útil agregar más RAM , pero no sé qué testings está ejecutando, así que no puedo decirlo con certeza.

¿Está bien limpiar el caching periódicamente? ¿Causará otros problemas?

Lo que estás haciendo aquí es básicamente la optimization del performance (o al less estás jugando con los parameters optimizables disponibles para tal fin). Los parameters optimizables suelen estar disponibles cuando conocer la respuesta "correcta" en general se considera imposible / impracticable. Si fuera posible crear reglas generales sobre cómo deberían funcionar las cosas, simplemente harían que el software hiciera eso y dejarían al administrador del sistema fuera de la cuestión.

Todo eso para decir que no podemos decir con absoluta certeza que no le causará problemas. Podemos decir que probablemente no cause la pérdida de funcionalidad, pero no podemos estar seguros. Diría que la caching del sistema de files está diseñada para mejorar el performance, por lo que obligar a las aplicaciones a esperar que ingresen los datos del disco cada vez que leen algo probablemente no sea deseable (aunque a veces puede ser indeseable pero necesario).

EDITAR:

Solo lee el comentario de @ Emmanuel. Él trae a queueción un buen punto. Si tiene espacio de intercambio no utilizado, puede intentar boost vm.swappiness para boost la preference del kernel de intercambiar la memory de la aplicación less utilizada. Si necesita más espacio de intercambio (o no tiene ninguno) puede encontrar instrucciones en línea para crear particiones de intercambio y files de intercambio.

EDIT # 2

No he jugado con este, pero mirando los documentos del kernel, hay un sintonizador sysctl dirty_ratio , que controla la cantidad de datos sucios que se mantendrán en la memory antes de que el kernel haga su propia sync , puede intentar disminuir eso de modo que solo unos pocos las páginas en el caching del sistema de files están marcadas como "sucias" y, por lo tanto, pueden ser desalojadas cuando se necesita memory.