
Wenn ich einen Python-Code ausführe, der zu viel RAM verwendet, beginnt mein Computer so stark zu swappen, dass ich einen Hard-Reboot durchführen muss. Um das zu beheben, habe ich Swap deaktiviert, da ich davon ausging, dass der OOM-Killer eingreifen würde. Allerdings treten immer noch genau dieselben Symptome auf! Das heißt, ich kann die Festplatte klappern hören, sobald der gesamte RAM verwendet wird, der Computer friert ein und ich muss einen Hard-Reboot durchführen.
Was könnte los sein und wie kann ich das Problem beheben?
Auf meinem System läuft Ubuntu 14.04.2 LTS, 3.13.0-43-generic #72-Ubuntu SMP Mon Dec 8 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux mit 8 GB RAM.
Meine /etc/fstab zeigt
# / was on /dev/sda1 during installation
UUID=80919e96-e83b-4c88-b30e-8673e1faa3b4 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
#UUID=68064725-c1bb-4293-b8d1-45b2a42fb7b4 none swap sw 0 0
Weitere Details
tail -n+1 /proc/sys/vm/overcommit_*
==> /proc/sys/vm/overcommit_memory <==
0
==> /proc/sys/vm/overcommit_ratio <==
50
cat /proc/sys/vm/oom_kill_allocating_task
0
Beispielcode
Leider weiß ich nicht, wie ich ein minimalistisches Python-Beispiel erstellen soll, das dieses Problem zeigt. Dies ist jedoch nicht-minimalistischer Code, der dies definitiv tut http://paste.ubuntu.com/11621823/. Ändern Sie einfach den Wert von „path“ im Code und führen Sie ihn aus. Auf meinem System verbraucht es den gesamten RAM und friert dann das System vollständig ein.
Antwort1
Ihr Problem ist Ihr Problem python code
und hat nichts damit zu tun swap
.
Swap
Der Speicherplatz wird vom Betriebssystem verwendet, wenn die Arbeitsspeicherauslastung zunimmt. Dann werden die derzeit nicht verwendeten Prozesse in den Swap-Bereich verschoben, der eine Partition ist. Auf diese Weise kann mehr Arbeitsspeicher für aktuell laufende Prozesse freigegeben werden. Wenn in den Swap-Bereich verschobene Prozesse verwendet werden, werden sie vom Swap-Bereich zurück in den Arbeitsspeicher verschoben.
Auf diese Weise ist Swapping hilfreich, um Situationen zu bewältigen, in denen zum Ausführen einer Funktion mehr Speicher erforderlich ist als die Menge an freiem Speicher, der zur Verfügung steht.
Da Sie den Swap deaktivieren, wird dies Ihr Problem nicht lösen, sondern nur vergrößern. Die einzige Lösung für Ihr Problem, die mir einfällt, ist entweder Ihren Python-Code zu optimieren, um weniger Speicher zu verwenden, oder den Speicher Ihres Computers zu erhöhen.
Außerdem wäre es besser, wenn Sie Ihren Code hier einfügen könnten, damit andere bei der Optimierung helfen können.