Ich benutze meinen Computer für die wissenschaftliche Programmierung. Es hat eine gesunde 8GB
RAM und 12GB
Swap Space. Da meine Probleme immer größer werden, überschreite ich häufig den gesamten verfügbaren Arbeitsspeicher. Anstatt abzustürzen (was zu bevorzugen wäre), scheint Ubuntu alles in Swap zu laden, einschließlich Unity und alle offenen Terminals. Wenn ich ein weggelaufenes Programm nicht rechtzeitig finde, kann ich nur warten - es dauert 4-5 Minuten, um zu einer Eingabeaufforderung zu wechseln, z. Ctrl-Alt-F2
wo kann ich den Prozess der Beleidigung töten.
Wie kann ich verhindern, dass Ubuntu durch Thrashing abstürzt, wenn ich den gesamten verfügbaren Speicher eines einzelnen fehlerhaften Programms verbrauche, da meine eigene Dummheit in diesem Forum nicht vorkommt ?
Experiment zu Hause *!
Öffnen Sie ein Terminal, starten python
Sie es numpy
und versuchen Sie es , wenn Sie es installiert haben:
>>> import numpy
>>> [numpy.zeros((10**4, 10**4)) for _ in xrange(50)]
* Warnung: kann nachteilige Auswirkungen haben, überwachen Sie den Prozess über iotop
oder top
töten Sie ihn rechtzeitig ab. Wenn nicht, sehen wir uns nach dem Neustart.
quelle
Mit Cgroups können Sie die Speichernutzung pro Prozess begrenzen.
https://en.wikipedia.org/wiki/Cgroups
http://www.mjmwired.net/kernel/Documentation/cgroups/memory.txt
Wissenschaftliches Rechnen ist bekanntermaßen speicherintensiv. Durch das Sandboxen Ihrer App in einer C-Gruppe sollten die übrigen Prozesse nicht zum Opfer fallen, da der Speicherdruck verringert wird.
Alternativ könnte eine VM als eine Art harte Grenze verwendet werden, da die App den an die virtuelle Maschine delegierten Speicher nur auf Kosten der Leistung nutzen kann. Die Konfiguration einer VM für Nichtinitiierte ist jedoch viel einfacher als das Einrichten und Verwalten einer cgroup.
Entscheidungen Entscheidungen :) Viel Glück!
quelle