¿Cómo puedo diagnosticar la eliminación de mi programa Python debido a un error de memoria insuficiente?

3

He estado construyendo una red neuronal que analiza grandes cantidades de datos (40G) y mi iMac destruye el proceso después de que se haya ejecutado durante aproximadamente un día.

En el pasado, en Linux, he creado un gran archivo de intercambio para evitar las limitaciones de memoria.

Ya veo:

$ python processor.py
[...maybe some std out messages, specific to what I'm doing...]
Killed.

He llegado a saber esto como el mensaje "has usado demasiada memoria, adiós". Nuevamente, he podido resolverlo utilizando un archivo de intercambio grande en Linux. ¿Cómo puedo aumentar el límite de intercambio en mi mac para que no se eliminen los procesos que utilizan grandes cantidades de memoria?

No estoy seguro de cómo podría obtener más información sobre por qué se mató.

    
pregunta InBetween 16.01.2015 - 00:14

1 respuesta

4

Estas son algunas formas de verificar problemas, pero me temo que pueden no ser una solución completa o incluso la correcta sin tener que echar un vistazo o buscar:

En otro shell después de iniciar el proceso de python (o si screen / tmux it):

  1. df /
  2. top -l 1 -S | head -12
  3. vm_stat y vm_stat 600
  4. sudo du -sm /var/vm/*

Una vez que tenga una buena línea de base, puede ver las cosas a lo largo del tiempo para ver cómo se comporta la red neuronal cada hora durante un tiempo. Si crees que las cosas son acerca de la detención, puedes ejecutar sysdiagnose python (o usar el proceso # si tienes más de un proceso de Python en ejecución). Además, si no desea esperar el día en que las cosas crezcan, puede infligir memory_pressure en el sistema antes o después de iniciar la red neuronal en python. Vea esta respuesta para saber cómo monitorear el Monitor de actividad cuando ejecuta este proceso:

respondido por el bmike 16.01.2015 - 02:10

Lea otras preguntas en las etiquetas