He estado construyendo una red neuronal que analiza grandes cantidades de datos (40 G) y mi iMac interrumpe el proceso después de haber estado funcionando durante aproximadamente un día.
En el pasado, en Linux, creé un gran archivo de intercambio para sortear las limitaciones de memoria.
Veo:
$ python processor.py
[...maybe some std out messages, specific to what I'm doing...]
Killed.
He llegado a conocer esto como el mensaje "has usado demasiada memoria, adiós". Nuevamente, pude resolverlo usando un archivo de intercambio grande en Linux. ¿Cómo puedo aumentar el límite de intercambio en mi Mac para que mis procesos que usan grandes cantidades de memoria no se eliminen?
No estoy seguro de cómo podría obtener más información sobre por qué lo mataron.
Aquí hay algunas formas de verificar si hay problemas, pero me temo que pueden no ser una solución completa o incluso correcta sin mirar o hurgar más:
En otro shell después de iniciar su proceso de python (o si usted screen
/ tmux
él):
df /
top -l 1 -S | head -12
vm_stat
yvm_stat 600
sudo du -sm /var/vm/*
Una vez que tenga una buena línea de base, puede observar las cosas a lo largo del tiempo para ver cómo se comporta la red neuronal cada hora durante un tiempo. Si cree que las cosas están a punto de detenerse, puede ejecutar sysdiagnose python
(o usar el proceso # si tiene más de un proceso de python en ejecución). Además, si no desea esperar el día en que las cosas aumenten, puede infligir memory_pressure
en el sistema antes o después de iniciar la red neuronal en python. Consulte esta respuesta para saber cómo monitorear el Monitor de actividad cuando ejecuta este proceso:
df /
a donde escribistedf \
es SIGKILL
Ed. Es difícil decir que es OOM en macOS desde quetail -f /var/log/system.log
Jan 14 10:46:39 ... com.apple.xpc.launchd[1] (com.apple.mdworker.shared.10000000-0000-0000-0000-000000000000[41845]): Service exited due to SIGKILL | sent by mds[72]
El mensaje de error no ayuda.
Luego probé Instrument
enviado con macOS,
Y adjunte el instrumento a su proceso de Python. Puedes ver que la memoria no tiene límites hasta que se elimina.
bmike
Entre
bmike
ulimit -a
No tengo un caso de prueba en el que pueda hacer que el sistema se ahogue en 10.10.x Además, observe la presión de la memoria