Sto eseguendo un Raspberry PI con Ubuntu 16.04.1 LTS (GNU / Linux 4.4.0-1042-raspi2 armv7l) e quando es. guarda un video tramite Samba, viene memorizzato nella cache e riempie la mia RAM con i dati memorizzati nella cache.
Questo sarà simile a questo:
user@rpi:~$ free -h -m
total used free shared buff/cache available
Mem: 920M 57M 133M 980K 729M 828M
Swap: 1.8G 29M 1.8G
Quindi, per quanto ne so, non dovrebbe essere una cosa negativa dato che Ubuntu vedrà quella parte di RAM come usata ma disponibile. Quindi, quando un altro processo ne ha effettivamente bisogno, sarà reso disponibile.
Ma quando la cache raggiunge il mio limite di RAM, si verificherà quanto segue:
Feb 8 19:08:36 rpi kernel: [160789.617128] Out of memory: Kill process 29171 (myprocess) score 40 or sacrifice child
Feb 8 19:06:08 rpi kernel: [160641.803753] Killed process 29072 (myprocess) total-vm:170312kB, anon-rss:63196kB, file-rss:43628kB
Qualcuno può spiegarmi perché questo accade e come posso evitarlo? Al momento la mia unica soluzione temporanea è di svuotare la cache manualmente:
sync && echo 3 > /proc/sys/vm/drop_caches
PS: So che non dovrei usare Swap su un RPI con un'unità flash, è stato un test temporaneo per questo problema che non ha aiutato.