Správa procesů v Linuxu je základní koncept, který by měl znát každý správný správce systému. Většina práce, kterou s těmito procesy děláte, se skládá ze základních, opakujících se úkolů, jako je spouštění a zastavování procesů, jejich hledání, zabíjení atd.
V některých méně častých případech může být nutné přeuspořádat procesy kvůli alokaci systémových prostředků. Když nastanou tyto situace, mnozí z nás se obrátí na svůj oblíbený vyhledávač, aby zjistili nejúčinnější způsob, jak toho dosáhnout. Nyní, když vás vyhledávací algoritmus přivedl sem k aktivaci Sysadmin, pojďme vám nabídnout odpovědi, které hledáte.
Níže rozeberu, jak se určuje priorita, a poté vám ukážu, jak s těmito hodnotami manipulovat.
Priorita procesu a relativita
Systémy Linux běžně spouštějí více procesů, než kolik je procesorových jednotek v počítači. Z tohoto důvodu bude plánovač procesů rychle přeskakovat mezi procesy na jednom jádru, čímž vytvoří iluzi, že spouštíme více současných procesů.
Ve skutečnosti je každému procesu přiřazena politika plánování procesů. V rámci těchto zásad se k měření hezkého používá 40bodová stupnice úrovně procesu. Úroveň nice je měrná jednotka, která popisuje relativní prioritu procesu. Když diskutujete o úrovních zdvořilosti, povšimněte si, že škála je -20 (nejvyšší priorita) až 19 (nejnižší priorita) a že proces zdědí svou úroveň slušnosti od rodiče (nejčastěji 0).
[ Také by vás mohlo těšit: Základy příkazů Linuxu:7 příkazů pro správu procesů ]
Nyní, pokud má proces nižší úroveň zpříjemnění (pod nulou), bude méně pravděpodobné, že se vzdá využití svého procesoru (ne příliš pěkné, je to?). Na druhou stranu proces s vysokou hodnotou zpříjemnění (překračující nulu) s větší pravděpodobností přestane využívat CPU.
Snadný způsob, jak si to zapamatovat, je, že pokud je někdo (nebo proces) opravdu milý, má větší sklon sdílet s ostatními. Pokud nejsou příliš milí, mají tendenci více chránit to, co jim patří (v tomto případě zdroje CPU).
Také, pokud není nedostatek zdrojů, i procesy s vysokou úrovní slušnosti budou využívat veškerý dostupný čas CPU. Proces vydá své zdroje pouze tehdy, když dojde k nedostatku šířky pásma.
Přehled priority
Nyní, když máme všechny souvislosti související s prioritou procesu, podívejme se na některé způsoby zobrazení těchto informací na terminálu.
Nejrychlejším a nejzákladnějším způsobem zobrazení informací o jemnosti je použití top
příkaz. Ve výchozím nastavení zobrazuje tyto informace ve čtvrtém sloupci (zleva doprava), a proto nevyžaduje žádné další možnosti ani příznaky.
Další a trochu složitější metodou je použití ps
příkaz s vydatnou pomocí možností formátování. Následující příkaz zobrazí procesy s jejich ID procesů, názvem, úrovní kvality a třídou plánování (seřazeno sestupně):
[tcarrigan@localhost ~]$ ps axo pid,comm,nice,cls --sort=-nice
Nyní v reálném čase:
Manipulace se stávající půvabností
Nyní víme, jak se dívat na slušnost existujícího procesu, ale co když tato hezká úroveň nevyhovuje našim potřebám? Jak můžeme tyto hodnoty změnit, abychom z našeho systému vytěžili maximum? No, pokud máte konkrétní proces, který požírá zdroje, které potřebujete jinde, můžete snížit pěknou úroveň tohoto specifického procesu. K tomu použijeme renice
příkaz.
Poznámka :pouze uživatel root může snížit úroveň zpříjemnění (zvýšit prioritu). Neprivilegovaní uživatelé mohou zvýšit pěkné úrovně, ale nemohou je snížit bez oprávnění root.
Podívejte se na tento sleep 500
proces. Má PID 23990 a výchozí příjemnou úroveň 0.
[tcarrigan@localhost ~]$ ps -o pid,comm,nice 23990
PID COMMAND NI
23990 sleep 0
Pokud bych chtěl, aby byl tento proces méně prioritní, použil bych následující renice
příkaz:
Aby byl proces důležitější (snížení úrovně nice), použili byste stejnou syntaxi příkazu jako privilegovaný uživatel.
[ Bezplatný cheat:Slovník Kubernetes ]
Ještě poslední věc
Dobře, než skončíme, je tu ještě jeden trik, který jsem sem chtěl zahrnout. Pokud se chystáte spustit proces, který má obvykle výchozí úroveň nice, která je nežádoucí, můžete tento parametr ve skutečnosti nastavit při vytváření procesu. Použijeme sleep
příkaz znovu. Tentokrát jej však vytvoříme pomocí nice
příkaz (který předvolí proces na úroveň nice 10).
Konkrétní úroveň nice můžete nastavit pomocí stejného příkazu s následující syntaxí:
[tcarrigan@localhost ~]$ nice -n 19 sleep 500 &
Výše uvedený příkaz nastaví pozadí sleep 500
na pěknou úroveň 19.
Naučit se tyto příkazy a předvádět je bylo zábavné. Když v budoucnu narazím na problémy se systémovými prostředky nebo hladovými procesy, mohu upravit zdroje jim přidělené.