Hogyan állítsunk be Linux folyamatprioritást szép és finom parancsokkal
Ebben a cikkben röviden elmagyarázzuk a kernelütemezőt (más néven folyamatütemezőt) és a folyamat prioritást, amelyek túlmutatnak. ennek az útmutatónak a terjedelmét. Ezután belevetjük magunkat egy kicsit a Linux folyamatkezelésbe: nézzük meg, hogyan futtathatunk egy programot vagy parancsot módosított prioritással, és hogyan módosíthatjuk a futó Linux folyamatok prioritását.
Olvassa el még: A Linux-folyamatok figyelése és a folyamatkorlátok beállítása felhasználónként
A Linux kernel ütemező megértése
A kernelütemező a kernel olyan egysége, amely meghatározza a következő futtatható folyamatok közül a legmegfelelőbbet; leosztja a processzoridőt a rendszer futtatható folyamatai között. A futtatható folyamat az, amely csak a CPU idejére vár, és készen áll a végrehajtásra.
Az ütemező képezi a Linux többfeladatos munkavégzésének magját, egy prioritás alapú ütemezési algoritmus segítségével választhat a rendszer futtatható folyamatai között. A folyamatokat a legérdemesebbek, valamint a CPU-idő szükségessége alapján rangsorolja.
A folyamatprioritás és a szép érték megértése
A kernel rengeteg információt tárol a folyamatokról, beleértve a folyamatprioritást is, amely egyszerűen egy folyamathoz rendelt ütemezési prioritás. A magasabb prioritású folyamatok az alacsonyabb prioritásúak előtt, az azonos prioritású folyamatok pedig egymás után, ismételten ütemezve kerülnek végrehajtásra.
Összesen 140 prioritás és két különálló prioritási tartomány van megvalósítva a Linuxban. Az első egy szép érték (szépség), amely -20
-tól (legmagasabb prioritású érték) 19
-ig (legalacsonyabb prioritású érték) terjed. az alapértelmezett érték a 0
, ezt fogjuk feltárni ebben az útmutatóban. A másik a valós idejű prioritás, amely alapértelmezés szerint 1 és 99, majd 100 és 139 között van. felhasználói térre készültek.
A Linux egyik fontos jellemzője a dinamikus prioritás alapú ütemezés, amely lehetővé teszi a folyamatok szép értékének megváltoztatását (növelését vagy csökkentését) az Ön igényei szerint, ahogy azt a későbbiekben látni fogjuk.
Hogyan ellenőrizheti a Linux folyamatok jó értékét
A folyamatok szép értékeinek megtekintéséhez használhatunk olyan segédprogramokat, mint a ps, top vagy htop.
A folyamatok szép értékének megtekintéséhez a ps paranccsal a felhasználó által definiált formátumban (itt az NI
oszlop a folyamatok szépségét mutatja).
ps -eo pid,ppid,ni,comm
Alternatív megoldásként használhatja a top vagy a htop segédprogramokat a Linux folyamatok szép értékeinek megtekintéséhez, ahogy az ábra mutatja.
top
htop
Különbség a PR vagy a PRI és az NI között
A fenti felső és htop kimeneten észreveheti, hogy van egy PR
és PRI
nevű oszlop. amely egy folyamat prioritását mutatja.
Ez tehát azt jelenti, hogy:
NI
– a szép érték, ami egy felhasználói tér fogalom, mígPR
vagyPRI
– a folyamat tényleges prioritása, amint azt a Linux kernel látja.
PR vagy PRI értékek kiszámítása
Total number of priorities = 140
Real time priority range(PR or PRI): 0 to 99
User space priority range: 100 to 139
Szép értéktartomány (NI): -20 és 19 között
PR = 20 + NI
PR = 20 + (-20 to + 19)
PR = 20 + -20 to 20 + 19
PR = 0 to 39 which is same as 100 to 139.
De ha az alábbi képernyőképen látható szám helyett rt
-t lát, az alapvetően azt jelenti, hogy a folyamat valós idejű ütemezési prioritás mellett fut.
Adott szép értékű parancs futtatása Linuxban
Itt megnézzük, hogyan lehet prioritást adni egy program vagy parancs CPU-használatának. Ha nagyon CPU-igényes programja vagy feladata van, de azt is tudja, hogy ennek végrehajtása sok időt vehet igénybe, a nice paranccsal magas vagy kedvező prioritást állíthat be.
A szintaxis a következő:
nice -n niceness-value [command args]
OR
nice -niceness-value [command args] #it’s confusing for negative values
OR
nice --adjustment=niceness-value [command args]
Fontos:
- Ha nincs megadva érték, a nice alapértelmezés szerint 10-es prioritást állít be.
- Egy parancs vagy program, amely szép alapértelmezések nélkül fut nulla prioritással.
- Csak a root futtathat megnövelt vagy magas prioritású parancsot vagy programot.
- A normál felhasználók csak alacsony prioritású parancsot vagy programot futtathatnak.
Például ahelyett, hogy az alapértelmezett prioritással indítana el egy programot vagy parancsot, a következő szép paranccsal elindíthatja egy adott prioritással.
sudo nice -n 5 tar -czf backup.tar.gz ./Documents/*
OR
sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*
Használhatja a harmadik módszert is, amely kissé zavaró, különösen a negatív kedvességi értékek esetében.
sudo nice -5 tar -czf backup.tar.gz ./Documents/*
Változtassa meg a folyamat ütemezési prioritását Linuxban
Mint korábban említettük, a Linux lehetővé teszi a dinamikus prioritás alapú ütemezést. Ezért, ha egy program már fut, akkor a renice paranccsal módosíthatja a prioritását a következő formában:
renice -n -12 -p 1055
renice -n -2 -u apache
Az alábbi minta felső kimenete alapján a teamspe+ 1055 PID-vel most -12
és minden esetben Az apache felhasználó tulajdonában lévő folyamatok -2
.
Még mindig ezt a kimenetet használva láthatja a PR=20 + NI képletet,
PR for ts3server = 20 + -12 = 8
PR for apache processes = 20 + -2 = 18
A renice paranccsal a felhasználó folyamatainak szép értékein végzett módosításai csak a következő újraindításig érvényesek. Az állandó alapértelmezett értékek beállításához olvassa el a következő részt.
Hogyan állítsuk be egy adott felhasználói folyamatok alapértelmezett szép értékét
Az /etc/security/limits.conf fájlban beállíthatja egy adott felhasználó vagy csoport alapértelmezett szép értékét. Elsődleges feladata az erőforrás-korlátok meghatározása a PAM-on keresztül bejelentkezett felhasználók számára.
A felhasználó határértékének szintaxisa a következő (és a különböző oszlopok lehetséges értékei a fájlban találhatók):
#<domain> <type> <item> <value>
Most használja az alábbi szintaxist, ahol a hard – a kemény hivatkozások érvényesítését, a soft eszközök – a lágy határértékek érvényesítését jelenti.
<username> <hard|soft> priority <nice value>
Alternatív megoldásként hozzon létre egy fájlt az /etc/security/limits.d/ alatt, amely felülbírálja a fenti fő fájl beállításait, és ezeket a fájlokat ábécé sorrendben olvassa be a rendszer.
Kezdje a /etc/security/limits.d/tecmint-priority.conf fájl létrehozásával a tecmint felhasználó számára:
vi /etc/security/limits.d/tecmint-priority.conf
Ezután adja hozzá ezt a konfigurációt:
tecmint hard priority 10
Mentse és zárja be a fájlt. Mostantól a tecmint tulajdonában lévő bármely folyamat értéke 10 lesz, a PR pedig 30.
További információért olvassa el a nice és a renice kézikönyvoldalait:
man nice
man renice
Érdemes lehet elolvasni a következő cikkeket is a Linux folyamatkezelésről.
- Futó folyamatok keresése és leállítása Linuxban
- Útmutató a Kill, Pkill és Killall parancsokhoz a folyamat leállításához Linux alatt
- A rendszerhasználat, a kimaradások figyelése és a Linux-kiszolgálók hibaelhárítása
- CPUTool – Korlátozza és szabályozza a Linux bármely folyamatának CPU-használatát
Ebben a cikkben röviden elmagyaráztuk a kernelütemezőt, a folyamatprioritást, megnéztük, hogyan lehet programot vagy parancsot futtatni módosított prioritással, valamint megváltoztatni az aktív Linux-folyamatok prioritását. A témával kapcsolatos gondolatait az alábbi visszajelzési űrlapon keresztül megoszthatja.