GNU/Linux >> Znalost Linux >  >> Linux

Jak zabránit výměně konkrétního programu?

Myslím, že problém se škytavkou není nutně způsoben výměnou. Pokud program něco hraje, Linux by si toho měl všimnout a nepřehazovat to. Programy, které toho moc nedělají, jsou první, které se vymění. Můžete zkontrolovat, zda se program skutečně vyměňuje, když se podíváte na RSS /RES pole z ps nebo nahoře . RSS je velikost rezidentní sady, neodložená fyzická paměť, kterou úkol používá (v kilobajtech).

Domnívám se, že váš problém je s největší pravděpodobností způsoben nesprávným plánováním CPU a I/O a trochou neefektivity Rhythmboxu, který jej činí citlivým na vysoké zatížení systému. Prioritu CPU lze změnit pomocí příkazů nice a renice . Prioritu I/O lze změnit pomocí ionice příkaz. Pouze super uživatel může používat vysoké priority. Měli byste také vědět, že kluci z linuxového jádra se snaží zlepšit odezvu desktopových systémů pomocí různých záplat s nízkou latencí, takže byste mohli zvážit jejich použití. Jedním z nich je patch ~ 200 řádků napsaný Mikem Galbraithem, který zapůsobil dokonce i na Linuse. Alternativou k tomuto patchi je trik cgroups Lennarta Poetteringa, o kterém si myslím, že bude výchozí ve Fedoře 15.

Každopádně bez těchto záplat jsou dvě možnosti:spustit program s vysokou prioritou nebo jej později změnit. Pro první možnost můžete použít obalový skript kolem Rhythmbox:

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

Budete jej muset spustit jako root. Pokud se nechcete přihlásit jako root, abyste to mohli spustit, můžete použít buď su nebo sudo .

Pokud jde o pozdější změnu priority, pokud jste příliš líní přihlásit se jako root a změnit ji, můžete zkusit použít úlohu cron, která se spouští každých 5 minut a nastavuje prioritu rhythmbox proces, ale toto bych nedoporučoval:

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

Krátká odpověď:Nemůžete a neměli byste.

Spustitelné soubory před dlouhou dobou ctily lepivý bit +t což by řeklo jádru, aby nevyměnilo, ale dnes je to ignorováno.

Pokud se jádro rozhodne, že musí vyměnit, má to jistě pádný důvod. Linux je velmi agresivní na využití paměti, protože RAM, která je nečinná, je plýtváním zdrojem.

Pokud opravdu nechcete swapovat, získejte více RAM nebo jen # swapoff -a (nedoporučuje se, může se stát, že váš systém bude nepoužitelný, pokud již máte problémy).

Shouldn't jde, když vyvíjíte nějakou aplikaci a nechcete, aby se vůbec vyměňovala. Podívejte se na tento příspěvek na stackoverflow.


Existuje několik způsobů, jak to udělat. Můžete zkusit zkusit „říká“ Linux méně pracovat se swapem (obecně):

echo 10 > /proc/sys/vm/swappiness

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

swappiness

Tento ovládací prvek se používá k definování toho, jak agresivní bude jádro odkládat stránky paměti. Vyšší hodnoty zvýší agresivitu, nižší hodnoty sníží množství swapu.

Výchozí hodnota je 60.

Další možností je použít správce jádra cgroups , je to specifické pro každý proces, ale budete mít nějakou „práci“:Odpovězeno zde:https://unix.stackexchange.com/questions/10214/per-process-swapiness-for -linux#10227


Linux
  1. Jak vyloučit konkrétní adresáře z kopírování v Linuxu

  2. Jak nainstalovat balíčky z konkrétního úložiště v Linuxu

  3. Jak načíst moduly jádra Linuxu z kódu C?

  1. Jak vymazat konkrétní příkaz z historie Bash v Linuxu

  2. Jak zabránit uživatelům sudo ve spouštění konkrétních příkazů?

  3. Jak zabránit přechodu na SWAP?

  1. Jak udělat program spustitelný odkudkoli?

  2. Journalctl:Jak zabránit zkrácení textu v terminálu?

  3. Jak zabránit `ls` v třídění výstupu?