La maggior parte della tua RAM è libera per le applicazioni, perché viene utilizzata per i buffer e la memorizzazione nella cache. Guarda la riga "-/+ buffers/cache:" per vedere la quantità di RAM che è realmente usato/libero. Una spiegazione può essere trovata qui.
Per verificare se Python sta perdendo memoria, monitora la dimensione RSS di quel pitone (o %mem) nel tempo. Per esempio. scrivi uno script di shell che viene chiamato da un cron job ogni paio d'ore per aggiungere l'output del tuo ps
catena di comando e l'output di free
comando in un file.
Se trovi che i processi Python sono perdite di memoria ci sono un paio di cose che puoi fare;
- Modifica il tuo script in modo che esista dopo 24 ore e utilizza ad es. un cron job per riavviarlo (la soluzione più semplice.)
- Dai uno sguardo approfondito a Python stesso e in particolare ai moduli di estensione che stai utilizzando. Usa il
gc
modulo per monitorare e influenzare l'utilizzo della memoria. Puoi ad es. chiamagc.count()
regolarmente per monitorare la quantità di oggetti contrassegnati per la raccolta. Puoi chiamaregc.collect()
esplicitamente e vedere se questo riduce l'utilizzo della memoria. Puoi anche modificare la soglia di raccolta.
Se l'utilizzo della RAM di Python non aumenta nel tempo, potrebbe essere un altro programma di demone. Lo script di registrazione della memoria che ho menzionato sopra dovrebbe dirti qual è.
Potrebbe esserci anche un altro motivo per cui il tuo computer si blocca. Guarda i file di log di Linux per gli indizi.
Modifica: Dato che hai wpa_supplicant
riempiendo il file di log, dovresti controllare lo stato del/dei filesystem. Un filesystem completo potrebbe causare il blocco del sistema. Se non stai utilizzando l'interfaccia wireless, disabilitala.