Procesy tvoří jádro běžícího systému Linux. Když se program převede na proces (což je, když je spuštěn), je nastaveno mnoho atributů. Někdy můžete chtít změnit tyto atributy za běhu. Existuje nástroj příkazového řádku chrt který vám to umožní.
V tomto tutoriálu probereme tento nástroj s několika snadno pochopitelnými příklady. Ale než to uděláme, stojí za zmínku, že všechny příklady v tomto článku byly testovány na počítači Ubuntu 18.04 LTS.
Linuxový příkaz chrt
Jak již bylo zmíněno v úvodní části výše, příkaz chrt vám umožňuje manipulovat s atributy procesu v reálném čase. Následuje jeho syntaxe:
chrt [options] -p [prio] pid
A zde je návod, jak to vysvětluje manuálová stránka nástroje:
chrt sets or retrieves the real-time scheduling attributes of an exist?.
ing pid, or runs command with the given attributes. Both policy (one
of SCHED_OTHER, SCHED_FIFO, SCHED_RR, SCHED_BATCH, or SCHED_IDLE) and
priority can be set and retrieved.
The SCHED_BATCH policy is supported since Linux 2.6.16. The SCHED_IDLE
policy is supported since Linux 2.6.23.
The SCHED_RESET_ON_FORK flag for policies SCHED_RR and SCHED_FIFO is
supported since Linux 2.6.31.
Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout dobrou představu o tom, jak příkaz chrt funguje.
O1. Jak používat příkaz chrt?
Předpokládejme, že máte zájem manipulovat se zásadami plánování nebo prioritou procesu gedit. Takže první věc, kterou musíte udělat, je získat ID procesu pro tento proces, což můžete udělat pomocí příkazu pidof.
pidof gedit
V mém systému například výše uvedený příkaz dal jako výstup pid '6063'. Chcete-li nyní načíst aktuální politiku plánování a prioritu pro proces gedit, použijte chrt následujícím způsobem:
chrt -p 6063
A zde je výstup, který tento příkaz vytvořil v mém systému:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Q2. Jak zajistit, aby chrt zobrazoval minimální/maximální platné priority?
To lze provést pomocí volby příkazového řádku -m.
chrt -m
Například v našem systému vytvořil výše uvedený příkaz následující výstup:
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0
Při nastavování zásad plánování se budete muset řídit těmito hodnotami pro nastavení priority.
O3. Jak nastavit zásadu plánování na SCHED_BATCH?
To lze provést pomocí volby příkazového řádku -b.
Například:
chrt -b -p 0 6063
Pokud nyní znovu zkontrolujete zásady plánování pro gedit pomocí následujícího příkazu:
chrt -p 6063
Měli byste získat výstup podobný následujícímu, což znamená, že vámi provedená změna byla použita:
pid 6063's current scheduling policy: SCHED_BATCH
pid 6063's current scheduling priority: 0
4. Jak nastavit zásady plánování na SCHED_FIFO?
To lze provést pomocí volby -f příkazového řádku.
chrt -f -p 20 6063
Stejně jako v předchozích otázkách a odpovědích můžete křížově ověřit změny pomocí chrt -p příkaz. Vezměte prosím na vědomí, že pro použití volby -f z příkazového řádku můžete vyžadovat oprávnění uživatele root.
O5. Jak nastavit zásady plánování na SCHED_OTHER?
To lze provést pomocí volby -o příkazového řádku.
chrt -o -p 0 6063
Pro ověření použijte příkaz chrt -p.
chrt -p 6063
Následující výstup je v mém případě:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Závěr
Souhlasím, příkaz chrt není druh nástroje, který můžete používat každý den. Sakra, možná to ani nebudete potřebovat, dokud se nezačnete věnovat správě systému nebo nepracujete na nějaké práci související s plánováním jádra. Nicméně stojí za to vědět alespoň to, že takový nástroj existuje. Pro více informací o chrt přejděte na jeho manuálovou stránku.