Ich habe ein neuronales Netzwerk aufgebaut, das große Datenmengen (40 G) analysiert, und mein iMac beendet den Prozess, nachdem er etwa einen Tag lang ausgeführt wurde.
In der Vergangenheit habe ich unter Linux eine große Auslagerungsdatei erstellt, um Speicherbeschränkungen zu umgehen.
Ich verstehe:
$ python processor.py
[...maybe some std out messages, specific to what I'm doing...]
Killed.
Ich kenne dies als die Nachricht "Sie haben zu viel Speicher aufgebraucht, auf Wiedersehen". Auch hier konnte ich es mit einer großen Auslagerungsdatei unter Linux lösen. Wie kann ich das Swap-Limit auf meinem Mac erhöhen, damit meine Prozesse, die viel Speicher verbrauchen, nicht beendet werden?
Ich bin mir nicht sicher, wie ich mehr Informationen darüber bekommen könnte, warum es getötet wurde.
Hier sind einige Möglichkeiten, um nach Problemen zu suchen, aber ich fürchte, sie sind möglicherweise keine vollständige oder sogar die richtige Lösung, ohne mehr zu spähen oder zu stochern:
In einer anderen Shell, nachdem Sie Ihren Python-Prozess gestartet haben (oder wenn Sie screen
/ tmux
es):
df /
top -l 1 -S | head -12
vm_stat
Undvm_stat 600
sudo du -sm /var/vm/*
Sobald Sie eine gute Basislinie haben, können Sie die Dinge im Laufe der Zeit beobachten, um zu sehen, wie sich das neuronale Netz stündlich für eine Weile verhält. Wenn Sie der Meinung sind, dass es ums Stoppen geht, können Sie ausführen sysdiagnose python
(oder die Prozessnummer verwenden, wenn mehr als ein Python-Prozess ausgeführt wird). Wenn Sie nicht den Tag warten möchten, bis sich die Dinge ansammeln, können Sie memory_pressure
dem System vor oder nach dem Start des neuronalen Netzes in Python zufügen. In dieser Antwort erfahren Sie, wie Sie den Aktivitätsmonitor überwachen, wenn Sie diesen Prozess ausführen:
df /
wo du geschrieben hastdf \
Es ist SIGKILL
Ed. Es ist schwer zu sagen, seit wann Sie OOM auf macOS habentail -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]
Die Fehlermeldung hilft nicht.
Dann habe ich versucht, Instrument
mit macOS ausgeliefert,
Und fügen Sie Instrument zu Ihrem Python-Prozess hinzu. Sie können sehen, dass die Erinnerung unbegrenzt ist, bis sie getötet wird.
Fahrrad
Zwischen
Fahrrad
ulimit -a
Ich habe keinen Testfall, in dem ich das System auf 10.10.x zum Ersticken bringen kann. Beobachten Sie auch den Speicherdruck