Kako nastaviti prednost procesa Linuxa z lepimi ukazi in renice


V tem članku bomo na kratko razložili načrtovalnik jedra (znan tudi kot razporejevalnik procesov) in prioriteto procesa, ki sta temi, ki presegata obseg tega priročnika. Nato se bomo malo poglobili v upravljanje procesov Linuxa: poglejte, kako zagnati program ali ukaz s spremenjeno prioriteto in spremeniti tudi prednost izvajanja procesov Linuxa.

Preberite tudi: Kako spremljati procese Linuxa in določiti omejitve procesov na osnovi posameznega uporabnika

Načrtovalnik jedra je enota jedra, ki od vseh procesov, ki jih je mogoče izvesti, določi najprimernejši proces za naslednji izvedbo; procesorski čas dodeli med izvedljivimi procesi v sistemu. Proces, ki ga je mogoče izvesti, je tisti, ki čaka le na čas procesorja in je pripravljen za izvedbo.

Načrtovalec je jedro večopravilnosti v Linuxu, pri čemer uporablja algoritem načrtovanja, ki temelji na prioritetah, za izbiro med procesi, ki jih je mogoče izvajati v sistemu. Razvršča procese glede na najzaslužnejše in potrebo po času CPE -ja.

V jedru je shranjenih veliko informacij o procesih, vključno s prednostjo procesa, ki je preprosto prednostna naloga razporejanja, priložena procesu. Procesi z višjo prioriteto se bodo izvajali pred tistimi z nižjo prioriteto, medtem ko bodo procesi z isto prioriteto večkrat načrtovani eden za drugim.

V Linuxu je skupno uvedenih 140 prioritet in dva različna obsega prioritet. Prva je lepa vrednost (lepota), ki se giblje od -20 (vrednost z najvišjo prioriteto) do 19 (vrednost z najnižjo prioriteto), privzeta vrednost pa je 0 , to bomo odkrili v tem priročniku. Druga je prednost v realnem času, ki se privzeto giblje od 1 do 99, nato pa je 100 do 139 namenjenih uporabniškemu prostoru.

Ena pomembnih značilnosti Linuxa je dinamično načrtovanje na podlagi prioritet, ki omogoča spreminjanje (povečanje ali zmanjšanje) lepe vrednosti procesov glede na vaše potrebe, kot bomo videli kasneje.

Kako preveriti lepo vrednost procesov Linux

Da bi videli lepe vrednosti procesov, lahko uporabimo pripomočke, kot je htop.

Če si želite ogledati lepo vrednost procesov z ukazom ps v uporabniško določeni obliki (tukaj stolpec NI prikazuje lepoto procesov).

$ ps -eo pid,ppid,ni,comm

Lahko pa uporabite pripomočke top ali htop za ogled Linuxovih lepih vrednosti, kot je prikazano.

$ top
$ htop

Iz zgornjih izhodov in htop zgoraj boste opazili, da obstaja stolpec PR in PRI , ki sprejemljivo prikazuje prednost postopka.

To pomeni, da:

  • NI - je lepa vrednost, ki je koncept uporabniškega prostora, medtem ko
  • PR ali PRI - je dejanska prioriteta procesa, ki jo vidi jedro Linuxa.

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

Lepo območje vrednosti (NI): -20 do 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.

Če pa vidite rt in ne številko, kot je prikazano na spodnjem posnetku zaslona, to v bistvu pomeni, da proces teče po prioriteti razporejanja v realnem času.

Kako zagnati ukaz z lepo vrednostjo v Linuxu

Tu bomo preučili, kako prednostno uporabiti CPU za program ali ukaz. Če imate zelo zahteven CPU program ali opravilo, vendar se tudi zavedate, da lahko traja dlje časa, ga lahko z lepim ukazom nastavite na visoko ali ugodno prednost.

Sintaksa je naslednja:

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

Pomembno:

  • Če ni podana nobena vrednost, lepo privzeto nastavi prioriteto 10.
  • Ukaz ali program se zažene brez lepih privzetih vrednosti s prednostjo nič.
  • Samo root lahko zažene ukaz ali program s povečano ali visoko prioriteto.
  • Običajni uporabniki lahko izvajajo samo ukaz ali program z nizko prioriteto.

Na primer, namesto da bi program ali ukaz zagnali s privzeto prednostjo, ga lahko zaženete z določeno prednostjo po naslednjem ukazu lepo.

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

Uporabite lahko tudi tretjo metodo, ki je nekoliko zmedena, zlasti pri negativnih vrednostih prijaznosti.

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

Spremenite prednostno razporeditev procesa v Linuxu

Kot smo že omenili, Linux omogoča dinamično načrtovanje na podlagi prioritet. Torej, če se program že izvaja, lahko njegovo prednost spremenite z ukazom renice v tej obliki:

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

Iz spodnjega vzorčnega izhoda je lepota teamspe + s PID 1055 zdaj -12 , za vse procese v lasti uporabniškega apache pa -2 .

Še vedno uporabljate ta izhod, lahko vidite formulo PR = 20 + NI,

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

Vse spremembe, ki jih naredite z ukazom renice v uporabniških procesih, lepe vrednosti veljajo le do naslednjega ponovnega zagona. Če želite nastaviti trajne privzete vrednosti, preberite naslednji razdelek.

Kako nastaviti privzeto lepo vrednost procesov določenega uporabnika

Privzeto lepo vrednost določenega uporabnika ali skupine lahko nastavite v datoteki /etc/security/limits.conf. Njegova glavna naloga je določiti omejitve virov za uporabnike, prijavljene prek PAM.

Sintaksa za določanje omejitve za uporabnika je naslednja (in v datoteki so razložene možne vrednosti različnih stolpcev):

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

Zdaj uporabite spodnjo sintakso, kjer trdo - pomeni uveljavljanje trdih povezav in mehko sredstvo - uveljavljanje mehkih omejitev.

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

Druga možnost je, da ustvarite datoteko pod /etc/security/limits.d/, ki preglasi nastavitve v glavni datoteki zgoraj, te datoteke pa se berejo po abecednem vrstnem redu.

Začnite z ustvarjanjem datoteke /etc/security/limits.d/tecmint-priority.conf za uporabnika tecmint:

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

Nato vanj dodajte to konfiguracijo:

tecmint  hard  priority  10

Shranite in zaprite datoteko. Od zdaj naprej bo imel vsak proces v lasti tecminta lepo vrednost 10 in PR 30.

Za več informacij preberite priročne strani Nice in Renice:

$ man nice
$ man renice 

Morda boste želeli prebrati tudi naslednje članke o upravljanju procesov v sistemu Linux.

  1. Kako najti in ubiti tekoče procese v Linuxu
  2. Priročnik za ukaze Kill, Pkill in Killall za zaključek procesa v Linuxu
  3. Kako spremljati uporabo sistema, izpadi in odpravljanje težav s strežniki Linux
  4. CPUTool - Omejite in nadzirajte uporabo katerega koli procesa v Linuxu CPU

V tem članku smo na kratko razložili načrtovalnik jedra, prioriteto procesa, preučili, kako zagnati program ali ukaz s spremenjeno prioriteto in spremeniti tudi prednost aktivnih procesov Linuxa. Vse misli glede te teme lahko delite prek spodnjega obrazca za povratne informacije.