Come faccio a diagnosticare il mio programma Python che viene ucciso a causa di un errore di memoria insufficiente?

3

Ho costruito una rete neurale che analizza grandi quantità di dati (40G) e il mio iMac uccide il processo dopo che è stato eseguito per circa un giorno.

In passato, su Linux, ho creato un grande file di scambio per aggirare i limiti di memoria.

Vedo:

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

Sono venuto a sapere che questo è il messaggio "hai consumato troppa memoria, addio". Ancora una volta, sono stato in grado di risolverlo usando un grande file di scambio su linux. Come posso aumentare il limite di swap sul mio Mac, quindi i miei processi che utilizzano grandi quantità di memoria non vengono uccisi?

Non sono sicuro di come ottenere ulteriori informazioni su perché è stato ucciso.

    
posta InBetween 16.01.2015 - 00:14
fonte

1 risposta

4

Ecco alcuni modi per verificare la presenza di problemi, ma temo che potrebbero non essere una soluzione completa o addirittura la soluzione corretta senza più sbirciare o sbirciare:

In un'altra shell dopo aver avviato il tuo processo python (o se screen / tmux it):

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

Una volta che hai una buona base, puoi guardare le cose nel tempo per vedere come si comporta la rete neurale ogni ora per un po '. Se pensi che le cose stiano per fermarsi, puoi eseguire sysdiagnose python (o usare il processo # se hai più di un processo Python in esecuzione). Inoltre, se non vuoi aspettare il giorno in cui le cose si accumulano, puoi infliggere memory_pressure sul sistema prima o dopo aver avviato la rete neurale in python. Vedere questa risposta per come monitorare Monitoraggio attività quando si esegue questo processo:

risposta data 16.01.2015 - 02:10
fonte

Leggi altre domande sui tag