Weboldal keresés

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íg
  • PR vagy PRI – 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.

  1. Futó folyamatok keresése és leállítása Linuxban
  2. Útmutató a Kill, Pkill és Killall parancsokhoz a folyamat leállításához Linux alatt
  3. A rendszerhasználat, a kimaradások figyelése és a Linux-kiszolgálók hibaelhárítása
  4. 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.