Ich habe einen Debian (Buster) Laptop mit 8 GB RAM und 16 GB Swap. Ich leite eine sehr lange laufende Aufgabe. Dies bedeutet, dass mein Laptop in den letzten sechs Tagen nicht benutzt wurde, während er durchläuft.
Dabei muss ich regelmäßig meinen Laptop als Laptop verwenden. Dies sollte kein Problem sein. Die Aufgabe, die lange ausgeführt wird, ist E / A-gebunden, arbeitet auf einer USB-Festplatte und benötigt nicht viel RAM (<200 MB) oder CPU (<4%).
Das Problem ist, wenn ich nach ein paar Stunden zu meinem Laptop zurückkehre, wird es sehr träge und es kann 30 Minuten dauern, bis ich wieder normal bin. Dies ist so schlimm, dass Crash-Monitore ihre jeweiligen Anwendungen als eingefroren markieren (insbesondere Browserfenster) und die Dinge fangen fälschlicherweise an, abstürzen zu lassen.
Wenn man auf den Systemmonitor schaut, wird von den 2,5 GB, die verwendet werden, ungefähr die Hälfte in den Swap verschoben. Ich habe bestätigt, dass dies das Problem ist, indem ich den Swap Space ( swapoff /dev/sda8
) entferne . Wenn ich es ohne Swap-Platz lasse, wird es auch nach 24 Stunden fast augenblicklich wieder lebendig. Mit Swap ist es praktisch ein Ziegelstein für die ersten fünf Minuten, nachdem es nur noch sechs Stunden gedauert hat. Ich habe bestätigt, dass die Speichernutzung 3 GB nicht überschreitet, auch wenn ich nicht da bin.
Ich habe versucht, den Swappiness ( siehe auch: Wikipedia ) auf Werte von 10
und zu reduzieren 0
, aber das Problem besteht weiterhin. Es scheint, dass der Kernel nach einem Tag der Inaktivität glaubt, dass die gesamte GUI nicht mehr benötigt wird, und löscht sie vom RAM (tauscht sie auf die Festplatte aus). Die langwierige Aufgabe besteht darin, einen riesigen Dateibaum zu durchsuchen und jede Datei zu lesen. Es könnte also sein, dass der Kernel verwirrt darüber ist, dass Caching helfen würde. Bei einem einzigen Durchlauf einer 2-TB-USB-Festplatte mit ca. 1 Milliarde Dateinamen wird ein zusätzlicher GB-RAM die Leistung jedoch nicht wesentlich verbessern. Dies ist ein billiger Laptop mit einer schleppenden Festplatte. Es kann einfach nicht schnell genug Daten in den RAM zurückladen.
Wie kann ich Linux anweisen, Swap Space nur im Notfall zu verwenden? Ich möchte nicht ohne Tausch laufen. Wenn etwas Unerwartetes passiert und das Betriebssystem plötzlich ein paar zusätzliche GB benötigt, möchte ich nicht, dass Aufgaben abgebrochen werden, und bevorzuge die Verwendung von Swap. Im Moment kann mein Laptop jedoch nicht verwendet werden, wenn ich die Swap-Funktion aktiviert lasse.
Die genaue Definition eines "Notfalls" könnte umstritten sein. Aber um zu verdeutlichen, was ich meine: Ein Notfall wäre, wenn das System keine andere Option hat, als Prozesse auszutauschen oder zu beenden.
Was ist ein Notfall? - Müssen Sie wirklich fragen? ... Ich hoffe, Sie befinden sich nie in einem brennenden Gebäude!
Es ist mir nicht möglich, alles zu definieren, was in dieser Frage einen Notfall darstellen könnte. Ein Notfall kann jedoch beispielsweise dann eintreten , wenn der Kernel so überlastet ist, dass er Prozesse mit dem OOM Killer beendet . Ein Notfall liegt NICHT vor, wenn der Kernel denkt, dass er die Leistung durch die Verwendung von Swap verbessern kann.
Final Edit: Ich habe eine Antwort akzeptiert, die genau das tut, wonach ich auf Betriebssystemebene gefragt habe. Zukünftige Leser sollten auch die Antworten beachten, die Lösungen auf Anwendungsebene bieten.