La mayor parte de su RAM es gratuita para las aplicaciones, ya que se usa para los búferes y el almacenamiento en caché. Mire la línea "-/+ buffers/cache:" para ver la cantidad de RAM que es realmente usado/gratis. Puede encontrar una explicación aquí.
Para verificar si Python tiene fugas de memoria, controle el tamaño RSS de ese Python (o %mem) a lo largo del tiempo. P.ej. escriba un script de shell que se llame desde un trabajo cron cada dos horas para agregar la salida de su ps
cadena de comandos y la salida del free
comando a un archivo.
Si encuentra que los procesos de Python son pérdida de memoria hay un par de cosas que puedes hacer;
- Modifique su secuencia de comandos para que desaparezca después de 24 horas y use, p. un trabajo cron para reiniciarlo (la salida fácil).
- Eche un vistazo en profundidad a Python y, especialmente, a los módulos de extensión que está utilizando. Usa el
gc
módulo para monitorear e influir en el uso de la memoria. Puede, por ejemplo, llama algc.count()
periódicamente para controlar la cantidad de objetos marcados para su recogida. Puedes llamar algc.collect()
explícitamente y vea si eso reduce el uso de memoria. También puede modificar el umbral de recopilación.
Si el uso de RAM de Python no aumenta con el tiempo, podría ser otro programa de daemon. El script de registro de memoria que mencioné anteriormente debería decirle cuál es.
También podría haber otra razón por la que su computadora se congela. Busque pistas en los archivos de registro de Linux.
Editar: Ya que tienes wpa_supplicant
completando el archivo de registro, debe verificar el estado del sistema de archivos. Un sistema de archivos completo puede hacer que el sistema se cuelgue. Si no está utilizando la interfaz inalámbrica, desactívela.