Das Problem ist meiner Meinung nach diesem Thread etwas ähnlich .
Es spielt keine Rolle, ob Swap aktiviert oder deaktiviert ist. Immer wenn die tatsächlich genutzte RAM-Menge sich dem Maximum nähert und fast kein Speicherplatz mehr für den Festplatten-Cache vorhanden ist, reagiert das System nicht mehr.
Die Festplatte dreht sich wild und manchmal friert sie nach einer Wartezeit von 10 bis 30 Minuten auf und manchmal nicht (oder mir geht die Geduld aus). Manchmal, wenn ich schnell agiere, kann ich es schaffen, die Konsole langsam zu öffnen und einige RAM-Essanwendungen wie den Browser zu beenden, und das System friert fast sofort ein.
Aufgrund dieses Problems sehe ich fast nie etwas im Swap, nur manchmal gibt es einige wenige MB, und bald danach erscheint dieses Problem. Meine nicht so fundierte Vermutung wäre, dass es in irgendeiner Weise damit zusammenhängt, dass der Festplatten-Cache zu gierig oder die Speicherverwaltung zu nachgiebig ist. Wenn der Speicher benötigt wird, wird er nicht schnell genug freigegeben und das System wird ausgehungert.
Das Problem kann sehr schnell gelöst werden, wenn mit Lagrge-Dateien (500 MB +) gearbeitet wird, die im Festplatten-Cache geladen sind und anschließend vom System nicht schnell genug entladen werden können.
Jede Hilfe oder Ideen wird sehr geschätzt.
Im Moment muss ich in ständiger Angst leben, wenn ein Computer einfrieren kann und ich ihn normalerweise neu starten muss. Wenn der RAM-Speicher wirklich ausgeht, würde ich es sehr viel bevorzugen, wenn nur einige User-Space-Anwendungen, wie z. B. Broser, beendet werden ( am liebsten wenn ich irgendwie markieren könnte was zuerst zu töten ist)
Obwohl das Geheimnis ist, warum ich in dieser Situation nicht getauscht werde.
UPDATE: Es hing einige Zeit nicht, aber jetzt habe ich wieder mehrere Vorkommnisse. Ich behalte jetzt zu jeder Zeit den RAM-Monitor auf meinem Bildschirm und als der Hang passierte, zeigte er immer noch ~ 30% frei (Wird wahrscheinlich vom Festplatten-Cache verwendet). Zusätzliche Symptome: Wenn zu dem Zeitpunkt, an dem ich ein Video anschaue (VLC-Player), der Ton zuerst stoppt, stoppt das Bild nach einigen Sekunden. Während der Ton gestoppt ist, habe ich immer noch die Kontrolle über den PC, aber wenn das Bild stoppt, kann ich die Maus nicht mehr bewegen und habe sie nach einigem Warten neu gestartet. Übrigens geschah dies nicht, als ich anfing, das Video zu sehen, aber irgendwann in (20 Minuten) und ich tat zu der Zeit nichts anderes, obwohl Browser und OOWRITE die ganze Zeit über auf dem zweiten Bildschirm geöffnet waren. Grundsätzlich entscheidet sich etwas einfach dafür, an einem bestimmten Punkt zu geschehen, und hängt das System auf.
Wie in den Kommentaren angefordert, habe ich dmesg direkt nach dem Hang ausgeführt. Ich habe nichts Seltsames bemerkt, wusste aber nicht, wie es aussehen sollte. Deshalb hier: https://docs.google.com/document/d/1iQih0Ee2DwsGd3VuQZu0bPbg0JGjSOCRZhu0B05CMYs/edit?hl=de_DE&authkey=CPzF7
Antworten:
Um dieses Problem zu beheben, wurde festgestellt, dass Sie die folgende Einstellung auf ungefähr 5% -6% des gesamten physischen Arbeitsspeichers festlegen müssen, dividiert durch die Anzahl der Kerne im Computer:
Beachten Sie, dass dies eine Pro-Core-Einstellung ist. Wenn ich also 2 GB RAM und zwei Kerne habe, habe ich aus Sicherheitsgründen 6% von nur 1 GB berechnet und ein bisschen mehr hinzugefügt.
Dies zwingt den Computer dazu, diese Menge an RAM freizuhalten, und schränkt dadurch die Fähigkeit ein, Festplattendateien zwischenzuspeichern. Natürlich wird immer noch versucht, sie zwischenzuspeichern und sofort auszutauschen, daher sollten Sie wahrscheinlich auch das Austauschen einschränken:
(100 = so oft wie möglich tauschen, 0 = nur bei Bedarf tauschen)
Das Ergebnis ist, dass Linux nicht mehr willkürlich entscheidet, eine ganze Filmdatei von ca. 1 GB im RAM zu laden, während es sie ansieht, und dabei die Maschine tötet.
Jetzt ist genügend Speicherplatz reserviert, um einen Speicherhunger zu vermeiden, der offenbar das Problem war (da es keine weiteren Einfrierungen wie zuvor gibt).
Nachdem ich einen Tag lang getestet habe, gibt es keine Abstürze mehr. Manchmal kommt es zu geringfügigen Verlangsamungen, weil Dinge häufiger zwischengespeichert werden. Aber damit kann ich leben, wenn ich den Computer nicht alle paar Stunden neu starten muss.
Die Lektion hier lautet: Die standardmäßige Speicherverwaltung ist nur ein Anwendungsfall und nicht immer die beste, auch wenn einige Leute versuchen, etwas anderes vorzuschlagen. Die Konfiguration von Home Entertainment Ubuntu sollte sich von der Konfiguration des Servers unterscheiden.
Sie möchten diese Einstellungen wahrscheinlich dauerhaft machen, indem Sie sie
/etc/sysctl.conf
wie folgt hinzufügen :quelle
vm.swappiness
wird in diesem Fall nichts bewirken, nehme ich an?vm.min_free_kbytes
passiert. Es fungiert als ein Seitenblock, der reserviert ist, um atomare (dh Füll- oder Kill- / Nicht-__GFP_WAIT
) Zuweisungen zu erleichtern, wenn ein hoher Systemspeicherbedarf besteht. Es könnte in der Tat sinnvoll sein, dies hier zu erwähnen (da es sich wahrscheinlich um Systemspeicherprobleme handelt), aber dies wäre sicherlich nicht der in dieser Antwort beschriebene Grund.Dies geschah für mich in einer neuen Installation von Ubuntu 14.04.
In meinem Fall hatte dies nichts mit den genannten Systemproblemen zu tun.
Stattdessen bestand das Problem darin, dass sich die UUID der Swap-Partition während der Installation von der nach der Installation unterschied. Mein Swap war also nie aktiviert und mein Computer stürzte nach ein paar Stunden ab.
Die Lösung bestand darin, die aktuelle UUID der Swap-Partition mit zu überprüfen
und dann
sudo nano /etc/fstab
, um den UUID-Wert des falschen Austauschs durch den von blkid gemeldeten zu ersetzen.Ein einfacher Neustart, um die Änderungen zu beeinflussen, und voila.
quelle
Ich weiß, dass diese Frage alt ist, aber ich hatte dieses Problem in Ubuntu (Chrubuntu) 14.04 auf einem Acer C720 Chromebook. Ich habe versucht, Krišjānis Nesenbergs Lösung, und es hat etwas funktioniert, aber immer noch manchmal abgestürzt.
Endlich habe ich eine Lösung gefunden, bei der zram installiert wurde, anstatt physischen Swap auf der SSD zu verwenden. Um es zu installieren Ich folgte einfach den Anweisungen hier , wie folgt aus :
Danach konnte ich die Größe des ZRAM-Swaps durch Ändern
/etc/init/zram-config.conf
in Zeile 21 konfigurieren .Ich habe die 2 durch eine 1 ersetzt, um die ZRAM-Größe mit der RAM-Größe zu vergleichen. Seitdem habe ich keine Einfrierungen oder Systemunreaktionen mehr gehabt.
quelle
zram
ist nur dann sinnvoll, wenn Sie keinen weiteren Arbeitsspeicher installieren können. Wenn das System beim Wechseln zu SSD zu langsam ist und der Arbeitsspeicher ohne Wechseln nicht mehr ausreicht,zram
kann dies hilfreich sein, bis Sie versuchen, ein wenig mehr zu tun. Das Ergebnis ist dasselbe wie bei einem fehlenden Wechseln des Arbeitsspeichers.Bei mir hat nichts geklappt !!
Also habe ich ein Skript geschrieben, um die Speichernutzung zu überwachen. Es wird zuerst versucht, den RAM-Cache zu löschen, wenn der Speicherverbrauch einen Schwellenwert erhöht. Sie können diesen Schwellenwert im Skript konfigurieren. Wenn der Speicherverbrauch den Schwellenwert auch dann nicht unterschreitet, werden die Prozesse in abnehmender Reihenfolge des Speicherverbrauchs nacheinander beendet, bis der Speicherverbrauch den Schwellenwert unterschreitet. Ich habe es standardmäßig auf 96% gesetzt. Sie können es konfigurieren, indem Sie den Wert der Variablen RAM_USAGE_THRESHOLD im Skript ändern.
Ich stimme zu, dass das Beenden von Prozessen, die viel Speicher verbrauchen, nicht die perfekte Lösung ist, aber es ist besser, EINE Anwendung zu beenden, anstatt ALLE Arbeit zu verlieren !! Das Skript sendet Ihnen eine Desktop-Benachrichtigung, wenn die RAM-Auslastung den Schwellenwert erhöht. Außerdem werden Sie benachrichtigt, wenn ein Prozess abgebrochen wird.
Speichern Sie den Code in einer Datei mit dem Namen save_hang.py. Führen Sie das Skript wie folgt aus:
Bitte beachten Sie, dass dieses Skript nur mit Python 3 kompatibel ist und Sie das tkinter-Paket installieren müssen. Sie können es installieren als:
Hoffe das hilft...
quelle
Ich vermute, Sie haben
vm.swappiness
einen sehr niedrigen Wert festgelegt, wodurch der Kernel zu spät ausgetauscht wird und zu wenig RAM für das System zur Verfügung steht.Sie können Ihre aktuelle Swap-Einstellung anzeigen, indem Sie Folgendes ausführen:
Standardmäßig ist dies auf 60 eingestellt. Das Ubuntu-Wiki empfiehlt die Einstellung auf 10, Sie können jedoch auch einen höheren Wert festlegen. Sie können es ändern, indem Sie Folgendes ausführen:
Dadurch wird es nur für die aktuelle Sitzung geändert. Damit es dauerhaft bleibt , müssen Sie
vm.swappiness = 10
es der/etc/sysctl.conf
Datei hinzufügen .Wenn Ihre Festplatte langsam ist, sollten Sie eine neue kaufen.
quelle
dmesg
Befehl ausführen , sollten Sie einige Informationen (und den Prozessnamen + die ID) des Prozesses sehen. Ich denke, Sie sollten besser eine neue, schnellere Festplatte kaufen. Oder aktualisieren Sie Ihren RAM.Ich habe lange mit diesem Problem zu kämpfen, aber jetzt scheint es auf meinem Laptop gelöst zu sein.
Wenn keine der anderen Antworten für Sie funktioniert (ich habe die meisten ausprobiert), spielen Sie mit min_free_kbytes , um mehr Speicherplatz im Arbeitsspeicher zu haben, wenn Ihr Computer mit dem Auslagern beginnt (kurz bevor Sie diesen Mindestwert im freien Arbeitsspeicher erreichen).
Ich habe 16 GB RAM, aber früher als später wurde der Speicher voll und reagierte dann für 10 bis 30 Minuten nicht mehr, bis einige Dinge ausgetauscht wurden.
Zumindest für mich beschleunigt das Setzen des Werts min_free_kbytes über den empfohlenen Wert den Austauschvorgang erheblich.
Versuchen Sie Folgendes für 16 GB RAM:
Um diesen Wert einzustellen, sehen Sie sich andere Antworten an oder googeln Sie einfach :)
quelle
Ich verwende ständig einen meiner Laptops von einer laufenden Ubuntu-SD-Karte mit einer kleinen ext4-Speicherpartition und einer Auslagerungsdatei auf der Festplatte. Wenn fast der gesamte Arbeitsspeicher verwendet wird und der Swap-Wert zu niedrig ist (manchmal ziehe ich es vor, die Festplatte möglichst vollständig auszuschalten, weil sie laut ist), fällt die Linux-Leistung für mich in der Regel von der Klippe, so dass ich gerade dabei bin TTY1 Firefox zu töten dauert 15 Minuten.
Das Erhöhen
/proc/sys/vm/vfs_cache_pressure
der Standardeinstellung von 100 auf einen Wert von 6000 scheint dies zu verhindern. Die Kernel-Dokumentation warnt jedoch davor, dies zu tunIch bin mir nicht ganz sicher, welche Nebenwirkungen das haben kann, also würde ich vorsichtig sein.
quelle
vfs_cache_pressure
erzielen, wenn Sie näher an 10 (dh viel weniger als 100) undmin_free_kbytes
höher einstellen . Seien Sie gewarnt, dass dermin_free_kbytes
Kernel-OOM-Killer alle tötet , wenn Sie zu hoch einstellen!min_free_kbytes
auf 262144 angehoben und festgestellt, dass eine Absenkungvfs_cache_pressure
den gegenteiligen Effekt hat - eine Absenkung unter 100 führt dazu, dass das System viel schneller nicht mehr reagiert. Ich bin mir nicht sicher warum genau.vfs_cache_pressure
Wertes dazu, dass Verzeichnisse vor dem Inhalt der zwischengespeicherten Dateien abgelegt werden. Infolgedessen leidet die Gesamtleistung in der Regel bei Werten über 100. Wenn Sie Schritte zur Reproduktion finden, kann das System abstürzen / hängen, beispielsweise mit Ubuntu Live CD Dann können Kernel-Entwickler die Ursache herausfinden. Bei mir tritt der Hang ohne Vorwarnung auf. Ich vermute, dass der Kernel aufgrund von OOM hängt, bevor OOM Killer genügend RAM freigegeben hat. Ich führe jetzt min_free_kbytes = 100000, admin_reserve_kbytes = 250000 und user_reserve_kbytes = 500000 aus.