GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann verhindert werden, dass ein bestimmtes Programm ausgetauscht wird?

Ich denke, dass das Problem mit dem Schluckauf nicht unbedingt durch das Tauschen verursacht wird. Wenn ein Programm etwas abspielt, sollte Linux dies bemerken und nicht tauschen. Programme, die nicht viel können, werden als erstes ausgetauscht. Sie können überprüfen, ob das Programm wirklich ausgetauscht wird, indem Sie sich den RSS ansehen /RES Feld von ps oder oben . RSS ist die residente Satzgröße, der nicht ausgelagerte physische Speicher, den eine Aufgabe verwendet (in Kilobyte).

Ich denke, dass Ihr Problem höchstwahrscheinlich durch eine falsche CPU- und E / A-Planung und eine gewisse Ineffizienz von Rhythmbox verursacht wird, die es empfindlich auf hohe Systemlasten macht. Die CPU-Priorität kann mit den Befehlen nice geändert werden und renice . Die I/O-Priorität kann mit dem ionice geändert werden Befehl. Nur der Superuser kann hohe Prioritäten verwenden. Sie sollten auch wissen, dass Linux-Kernel-Leute versuchen, die Reaktionsfähigkeit von Desktop-Systemen mit verschiedenen Low-Latency-Patches zu verbessern, also sollten Sie erwägen, sie zu verwenden. Einer davon ist ein ~200-Zeilen-Patch, geschrieben von Mike Galbraith, der sogar Linus beeindruckt hat. Die Alternative zu diesem Patch ist Lennart Poetterings cgroups-Trick, der meiner Meinung nach der Standard in Fedora 15 sein wird.

Wie auch immer, ohne diese Patches gibt es zwei Möglichkeiten:Starten Sie das Programm mit einer hohen Priorität oder ändern Sie es später. Für die erste Option könnten Sie ein Wrapper-Skript um Rhythmbox verwenden:

#!/bin/sh
# Run Rhytmbox with high CPU and I/O priorities
nice -n -10 ionice -c 1 -n 1 su -l -c rhythmbox alexei

Sie müssen es als root ausführen. Wenn Sie sich nicht als Root anmelden möchten, um dies zu starten, können Sie entweder su verwenden oder sudo .

Wenn Sie die Priorität später ändern möchten, können Sie versuchen, einen Cron-Job zu verwenden, der alle 5 Minuten ausgeführt wird und die Priorität von rhythmbox festlegt, wenn Sie zu faul sind, sich als root anzumelden, um sie zu ändern Prozess, aber ich würde nicht empfehlen, dies zu tun:

#!/bin/sh
renice -n -10 -p `pidof rhythmbox`
ionice -c 1 -n 1 -p `pidof rhythmbox`

Kurze Antwort:Sie können und sollten nicht.

Vor langer Zeit ehrten ausführbare Dateien das Sticky Bit +t was dem Kernel sagen würde, dass er nicht tauschen soll, aber heute wird es ignoriert.

Wenn der Kernel entscheidet, dass er tauschen muss, hat er sicher einen triftigen Grund. Linux ist sehr aggressiv in Bezug auf die Speichernutzung, da ungenutzter RAM eine verschwendete Ressource ist.

Wenn Sie wirklich nicht tauschen möchten, besorgen Sie sich mehr RAM oder nur # swapoff -a (nicht empfohlen, kann Ihr System unbrauchbar machen, wenn Sie bereits Probleme haben).

Shouldn't geht, wenn Sie eine App entwickeln und nicht möchten, dass sie überhaupt ausgetauscht wird. Sehen Sie sich diesen Beitrag auf Stackoverflow an.


Es gibt mehrere Möglichkeiten, dies zu tun. Sie können versuchen, zu versuchen, "sagt", dass Linux weniger mit Swap funktioniert (im Allgemeinen):

echo 10 > /proc/sys/vm/swappiness

Von:https://www.kernel.org/doc/Documentation/sysctl/vm.txt

Austauschbarkeit

Dieses Steuerelement wird verwendet, um zu definieren, wie aggressiv der Kernel Speicherseiten austauschen wird. Höhere Werte erhöhen die Aggressivität, niedrigere Werte verringern die Swap-Menge.

Der Standardwert ist 60.

Eine andere Option ist die Verwendung des cgroups-Kernel-Managers. Dies ist prozessspezifisch, aber Sie müssen einige „Arbeiten“ erledigen:Hier beantwortet:https://unix.stackexchange.com/questions/10214/per-process-swapiness-for -linux#10227


Linux
  1. Wie lade ich Linux-Kernel-Module aus C-Code?

  2. Wie greife ich (wenn möglich) auf den Kernel-Space aus dem User-Space zu?

  3. Wie kann ich bestimmte Regeln aus iptables entfernen?

  4. Wie kann ich verhindern, dass Kernel-Nachrichten meine Konsole überfluten?

  5. So verhindern Sie, dass ein Prozess Dateien schreibt

So erstellen Sie einen Linux-Kernel von Grund auf neu {Schritt-für-Schritt-Anleitung}

So installieren Sie ein Programm von der Quelle unter Linux

So erstellen Sie einen Linux-Kernel von Grund auf neu

Wie entferne ich Swap Space von Centos 7.x?

So kompilieren Sie den Linux-Kernel aus der Quelle, um einen benutzerdefinierten Kernel zu erstellen

Wie kann man verhindern, zu SWAP zu gehen?