Alle GNU / Linux-Distributionen, die ich bisher getestet habe, haben das Problem, dass jedes Mal, wenn der RAM voll ist und das System zu tauschen beginnt, der gesamte Desktop und die grafische Benutzeroberfläche so schnell nicht mehr reagieren, dass ich manchmal etwa 5-10 Sekunden warten muss die physische Maus bewegt haben, bis sich der Mauszeiger tatsächlich bewegt.
Dies ist eine Art ärgerliches Verhalten, insbesondere bei Systemen mit niedrigem RAM.
Gibt es eine Möglichkeit, einigen Anwendungen / Jobs, wie der Desktop-Umgebung usw., eine höhere Priorität als anderen Anwendungen zuzuweisen, damit die Anwendung, die den gesamten Speicher beansprucht, vor der Desktop-Umgebung usw. ausgetauscht wird?
BEARBEITEN: Ich spreche von dem Fall, dass der gesamte Arbeitsspeicher verwendet wird, sodass er immer ausgetauscht wird, wenn er nicht deaktiviert ist (ich möchte nicht, dass Prozesse zufällig abgebrochen werden). Ich hatte dieses Problem nicht nur in Umgebungen mit niedrigem RAM-Speicher, sondern auch mit 8 GB RAM auf meinem Desktop-Computer, teilweise aufgrund vieler VMs, teilweise aufgrund von Speicherverlusten. ZRAM ist auch keine Lösung, da es das Problem nur verzögert. Die einzige Lösung, die ich mir für dieses Problem vorstellen kann, ist ein Userspace-Dienstprogramm oder eine Kernel-API, mit der das Auslagern bestimmter Jobs verhindert oder zumindest sehr unwahrscheinlich gemacht werden kann. Kennt jemand eine andere Lösung oder weiß etwas über ein solches Tool oder eine solche API, die es gibt oder die geplant ist?
2. BEARBEITUNG : ulatencyd scheint laut https://aur.archlinux.org/packages/ulatencyd-git/ und https://wiki.archlinux.org/index.php/Ulatencyd nicht mit neueren Versionen von systemd zu funktionieren . Dies kann daran liegen, dass systemd die vollständige Kontrolle über cgroups aus Sicht des Userspace übernommen hat, wenn ich das richtig verstehe.
cgroup_enable=memory swapaccount=1
in der Kernel-Befehlszeile; beachten Sie, dass dies geringfügige Leistungskosten verursacht). Beispielimplementierung: ulatencyd .Antworten:
Soweit ich weiß, ist dies kein Linux-spezifisches Problem, sondern die Funktionsweise von SWAP (oder virtuellem Speicher). Wenn das Betriebssystem Daten auf der Festplatte und nicht auf dem RAM nachschlagen muss, wird es langsamer. Nichts, was Sie dagegen tun können, der Zugriff auf die Festplatte ist viel langsamer als der Zugriff auf den Arbeitsspeicher.
Sie werden nicht in der Lage sein, die Priorität festzulegen, mit der Prozesse ausgetauscht werden. Dies wird vom Kernel bestimmt, der versucht, die Effizienz zu maximieren. Sie werden es nicht besser machen können. Was du kannst die CPU-Priorität eines Prozesses festlegen, was möglicherweise hilfreich ist. Ihr System wird aufgrund der Zeit, die zum Lesen von / nach SWAP benötigt wird, heruntergefahren. Dies bedeutet, dass die CPU warten muss, bis die relevanten Daten von dem Prozess, der sie anfordert, abgerufen wurden, bevor sie fortfahren können. Wenn Sie für Ihr DE eine höhere Priorität für den CPU-Zugriff festlegen, sollte dies die Operationen nach oben schieben und die Dinge etwas beschleunigen.
Die CPU-Priorität wird also mit den Befehlen
nice
und festgelegtrenice
:Die Prioritäten reichen von -20 (höchste Priorität) bis 20 (niedrigste Priorität). Um die Priorität eines laufenden Prozesses zu ändern, können Sie Folgendes tun:
wo
$PID
ist die PID des Prozesses, dessen Priorität Sie erhöhen möchten. Mit können Siepgrep
herausfinden, was das ist. Beispielsweise:Die andere Option wäre, die "Austauschbarkeit" des Systems festzulegen, die bestimmt, wann es mit dem Austausch beginnt. Ein Swap-Wert von 1 bedeutet, dass nur der Swap ausgeführt wird, um Speicherfehler zu vermeiden. Höhere Werte bedeuten, dass der Austausch gestartet wird, auch wenn noch physischer Speicher verfügbar ist. Sie können dies auf einen relativ niedrigen Wert einstellen, um den Systemaustausch so gering wie möglich zu halten. Diese Zeile hinzufügen zu
/etc/sysctl.conf
:ACHTUNG: Das ist keine gute Idee, wenn Sie nicht viel RAM haben. Tauschen ist im Allgemeinen eine gute Sache. Sie müssen ein wenig mit den Werten herumspielen, um die richtige Balance für Ihr System zu finden.
quelle