Kaip nustatyti „Linux“ proceso prioritetą naudojant „nice and renice“ komandas


Šiame straipsnyje trumpai paaiškinsime branduolio planavimo priemonę (dar vadinamą proceso planuotoju) ir proceso prioritetą, kurie yra temos, kurios nepatenka į šio vadovo taikymo sritį. Tada mes pasinersime į šiek tiek „Linux“ procesų valdymo: sužinokime, kaip paleisti programą ar komandą su modifikuotu prioritetu ir taip pat pakeisti „Linux“ procesų vykdymo prioritetą.

Taip pat skaitykite: Kaip stebėti „Linux“ procesus ir nustatyti procesų ribas pagal vartotojo principą

Branduolio planavimo priemonė yra branduolio vienetas, kuris nustato tinkamiausią procesą iš visų vykdomų procesų, kurie bus vykdomi toliau; jis paskirsto procesoriaus laiką tarp vykdomų sistemos procesų. Vykdomas procesas yra tas, kuris laukia tik procesoriaus laiko, jis yra paruoštas vykdyti.

Tvarkaraštis sudaro daugelio užduočių pagrindą sistemoje „Linux“, naudodamasis prioritetiniu planavimo algoritmu, norėdamas pasirinkti tarp vykdomų sistemos procesų. Jis rikiuoja procesus, pagrįstus labiausiai nusipelniusiais, taip pat procesoriaus laiko poreikiu.

Branduolyje saugoma daug informacijos apie procesus, įskaitant proceso prioritetą, kuris yra tiesiog prie proceso priskirtas planavimo prioritetas. Procesai su didesniu prioritetu bus vykdomi prieš tuos, kurie turi mažesnį prioritetą, o to paties prioriteto procesai yra suplanuoti vienas po kito pakartotinai.

„Linux“ yra iš viso 140 prioritetų ir du skirtingi prioritetų diapazonai. Pirmoji yra graži vertė (gražumas), kuri svyruoja nuo -20 (didžiausia prioriteto vertė) iki 19 (mažiausia prioriteto vertė), o numatytoji reikšmė yra 0 , tai mes atskleisime šiame vadove. Kitas yra realaus laiko prioritetas, kuris pagal numatytuosius nustatymus svyruoja nuo 1 iki 99, tada nuo 100 iki 139 yra skirti vartotojo erdvei.

Viena svarbių „Linux“ savybių yra dinaminis prioritetinis planavimas, leidžiantis keisti (padidinti ar sumažinti) malonią procesų vertę, atsižvelgiant į jūsų poreikius, kaip pamatysime vėliau.

Kaip patikrinti gražią „Linux“ procesų vertę

Norėdami pamatyti gražias procesų vertes, galime naudoti tokias paslaugas kaip „htop“.

Norėdami peržiūrėti procesus „nice value“ naudodami „ps“ komandą vartotojo nustatytu formatu (stulpelyje NI rodomas procesų malonumas).

$ ps -eo pid,ppid,ni,comm

Arba galite naudoti „top“ arba „htop“ komunalines paslaugas norėdami peržiūrėti „Linux“ procesų vertes, kaip parodyta.

$ top
$ htop

Iš viršaus ir aukščiau pateiktų išvesties aukščiau pastebėsite, kad yra stulpelis, pavadintas PR ir PRI , kuris parodo proceso prioritetą.

Todėl tai reiškia, kad:

  • NI - tai puiki vertė, kuri yra vartotojo erdvės sąvoka, o
  • PR arba PRI - tai tikrasis proceso prioritetas, kaip mato „Linux“ branduolys.

Total number of priorities = 140
Real time priority range(PR or PRI):  0 to 99 
User space priority range: 100 to 139

Gražus verčių diapazonas (NI): nuo -20 iki 19

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.

Bet jei matote rt , o ne skaičių, kaip parodyta toliau pateiktoje ekrano kopijoje, tai iš esmės reiškia, kad procesas vykdomas pagal realaus laiko planavimo prioritetą.

Kaip paleisti komandą su tam tikra gražia verte Linux sistemoje

Čia mes panagrinėsime, kaip nustatyti prioritetą programos ar komandos procesoriaus naudojimui. Jei turite labai daug procesoriaus reikalaujančią programą ar užduotį, bet taip pat suprantate, kad ją atlikti gali užtrukti ilgai, naudodami komandą „nice“ galite nustatyti jai aukštą arba palankų prioritetą.

Sintaksė yra tokia:

$ 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]

Svarbu:

  • Jei nenurodoma jokia vertė, „nice“ pagal numatytuosius nustatymus nustato 10 prioritetą.
  • Komandos ar programos vykdymas be gražių numatytųjų reikšmių yra nulis.
  • Tik root gali vykdyti komandą ar programą su padidintu arba aukštu prioritetu.
  • Įprasti vartotojai gali vykdyti komandą ar programą tik su mažu prioritetu.

Pavyzdžiui, užuot paleidę programą ar komandą pagal numatytąjį prioritetą, galite ją paleisti su tam tikru prioritetu naudodami šią gražią komandą.

$ sudo nice -n 5 tar -czf backup.tar.gz ./Documents/*
OR
$ sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*

Taip pat galite naudoti trečiąjį metodą, kuris yra šiek tiek painus, ypač dėl neigiamų malonumo vertybių.

$ sudo nice -5 tar -czf backup.tar.gz  ./Documents/*

Pakeiskite „Linux“ proceso planavimo prioritetą

Kaip jau minėjome anksčiau, „Linux“ leidžia dinamiškai planuoti prioritetais. Todėl, jei programa jau veikia, galite pakeisti jos prioritetą naudodami komandą renice šioje formoje:

$ renice -n  -12  -p 1055
$ renice -n -2  -u apache

Iš žemiau pateikto aukščiausiojo pavyzdžio komandospepe + su PID 1055 malonumas dabar yra -12 , o visiems vartotojo apache turimiems procesams yra -2 .

Vis dar naudojant šią išvestį, galite pamatyti formulę PR = 20 + NI stovi,

PR for ts3server = 20 + -12 = 8
PR for apache processes = 20 + -2 = 18

Visi pakeitimai, kuriuos atlikote naudodamiesi „renice“ komanda vartotojo procesų vertėms, yra taikomi tik iki kito perkrovimo. Norėdami nustatyti nuolatines numatytąsias vertes, perskaitykite kitą skyrių.

Kaip nustatyti numatytąją gražią konkretaus vartotojo procesų vertę

Faile /etc/security/limits.conf galite nustatyti numatytąją gražią konkretaus vartotojo ar grupės vertę. Pagrindinė jo funkcija yra apibrėžti išteklių ribas vartotojams, prisijungusiems per PAM.

Vartotojo ribos apibrėžimo sintaksė yra tokia (o galimos įvairių stulpelių vertės yra paaiškintos byloje):

#<domain>   <type>  <item>  <value>

Dabar naudokite žemiau esančią sintaksę, kur „hard“ reiškia tvirtų nuorodų vykdymą ir „soft soft“ - „minkštųjų ribų“ vykdymą.

<username>  <hard|soft>  priority  <nice value>

Arba sukurkite failą aplanke /etc/security/limits.d/, kuris nepaiso aukščiau esančio pagrindinio failo nustatymų, ir šie failai skaitomi abėcėlės tvarka.

Pirmiausia sukurkite failą /etc/security/limits.d/tecmint-priority.conf vartotojo tecmint:

# vi /etc/security/limits.d/tecmint-priority.conf

Tada į ją pridėkite šią konfigūraciją:

tecmint  hard  priority  10

Išsaugokite ir uždarykite failą. Nuo šiol bet kokio „tecmint“ priklausančio proceso vertė bus gera 10, o PR - 30.

Norėdami gauti daugiau informacijos, perskaitykite „nice and renice“ vadovo puslapius:

$ man nice
$ man renice 

Taip pat galite perskaityti šiuos straipsnius apie „Linux“ procesų valdymą.

  1. Kaip rasti ir nužudyti veikiančius procesus sistemoje „Linux“
  2. „Kill“, „Pkill“ ir „Killall“ komandų, skirtų nutraukti procesą sistemoje „Linux“, vadovas
  3. Kaip stebėti sistemos naudojimą, sutrikimus ir pašalinti „Linux“ serverių triktis
  4. „CPUTool“ - apribokite ir valdykite procesoriaus naudojimą bet kuriame „Linux“ procese

Šiame straipsnyje trumpai paaiškinome branduolio planavimo priemonę, proceso prioritetą, apžvelgėme, kaip paleisti programą ar komandą su modifikuotu prioritetu ir taip pat pakeisti aktyvių „Linux“ procesų prioritetą. Galite pasidalinti bet kokiomis mintimis šia tema naudodamiesi žemiau esančia atsiliepimų forma.