Kā iestatīt Linux procesa prioritāti, izmantojot jaukas un renice komandas


Šajā rakstā mēs īsi paskaidrosim kodola plānotāju (sauktu arī par procesu plānotāju) un procesa prioritāti, kas ir tēmas, kas neietilpst šīs rokasgrāmatas darbības jomā. Tad mēs iegremdēsimies mazliet Linux procesu pārvaldībā: uzziniet, kā palaist programmu vai komandu ar modificētu prioritāti, kā arī mainīt Linux procesu palaišanas prioritāti.

Lasiet arī: Kā pārraudzīt Linux procesus un iestatīt procesu ierobežojumus katram lietotājam

Kodola plānotājs ir kodola vienība, kas nosaka vispiemērotāko procesu no visiem palaistajiem procesiem, lai izpildītu nākamo; tas sadala procesora laiku starp sistēmas darbināmajiem procesiem. Darbināms process ir process, kas gaida tikai procesora laiku, un tas ir gatavs izpildei.

Plānotājs veido daudzuzdevumu kodolu Linux, izmantojot prioritātes plānošanas algoritmu, lai izvēlētos starp palaistajiem procesiem sistēmā. Tas sarindo procesus, kuru pamatā ir visvairāk pelnījušie, kā arī nepieciešamība pēc CPU laika.

Kodols glabā daudz informācijas par procesiem, ieskaitot procesa prioritāti, kas ir vienkārši procesam pievienotā plānošanas prioritāte. Procesi ar augstāku prioritāti tiks izpildīti pirms tiem, kuriem ir zemāka prioritāte, savukārt procesi ar tādu pašu prioritāti tiek plānoti viens pēc otra atkārtoti.

Linux kopumā ir ieviestas 140 prioritātes un divi atšķirīgi prioritāšu diapazoni. Pirmais ir jauka vērtība (jaukums), kas svārstās no -20 (augstākās prioritātes vērtība) līdz 19 (zemākā prioritātes vērtība), un noklusējuma vērtība ir 0 , to mēs atklāsim šajā ceļvedī. Otra ir reālā laika prioritāte, kas pēc noklusējuma svārstās no 1 līdz 99, pēc tam no 100 līdz 139 ir domātas lietotāja telpai.

Viena svarīga Linux iezīme ir dinamiska, uz prioritātēm balstīta plānošana, kas ļauj mainīt jauko procesu vērtību (palielināt vai samazināt) atkarībā no jūsu vajadzībām, kā redzēsim vēlāk.

Kā pārbaudīt Linux procesu jauko vērtību

Lai redzētu procesu jaukās vērtības, mēs varam izmantot tādus utilītus kā htop.

Lai skatītu procesus nice value ar ps komandu lietotāja definētā formātā (šeit kolonnā NI parādīta procesu jaukums).

$ ps -eo pid,ppid,ni,comm

Varat arī izmantot top vai htop utilītprogrammas, lai skatītu Linux procesu jaukas vērtības, kā parādīts.

$ top
$ htop

No augšas un augšdaļas augšdaļas augšpusē pamanīsit, ka ir uztveroša kolonna ar nosaukumu PR un PRI , kas parāda procesa prioritāti.

Tāpēc tas nozīmē, ka:

  • NI - ir jauka vērtība, kas ir lietotāja telpas jēdziens, bet
  • PR vai PRI - tā ir procesa faktiskā prioritāte, kā to redz Linux kodols.

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

Jauks vērtību diapazons (NI): -20 līdz 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, ja redzat rt , nevis numuru, kā parādīts zemāk redzamajā ekrānuzņēmumā, tas būtībā nozīmē, ka process darbojas reāllaika plānošanas prioritātē.

Kā palaist komandu ar noteiktu jauku vērtību Linux

Šeit mēs aplūkosim, kā noteikt prioritāti programmas vai komandas procesora lietošanai. Ja jums ir ļoti CPU ietilpīga programma vai uzdevums, bet jūs arī saprotat, ka tā izpilde var aizņemt daudz laika, varat iestatīt tai augstu vai labvēlīgu prioritāti, izmantojot komandu nice.

Sintakse ir šāda:

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

Svarīgs:

  • Ja vērtība nav norādīta, nice pēc noklusējuma nosaka prioritāti 10.
  • Komanda vai programma, kas darbojas bez jaukām noklusējuma vērtībām, ir nulle.
  • Tikai root var palaist komandu vai programmu ar paaugstinātu vai augstu prioritāti.
  • Parastie lietotāji var palaist komandu vai programmu tikai ar zemu prioritāti.

Piemēram, tā vietā, lai palaistu programmu vai komandu ar noklusējuma prioritāti, varat to sākt ar noteiktu prioritāti, izmantojot šādu jauku komandu.

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

Varat arī izmantot trešo metodi, kas ir nedaudz mulsinoša, jo īpaši attiecībā uz negatīvām jaukuma vērtībām.

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

Mainiet procesa plānošanas prioritāti Linux

Kā jau minējām iepriekš, Linux ļauj veikt dinamisku, uz prioritātēm balstītu plānošanu. Tāpēc, ja programma jau darbojas, varat mainīt tās prioritāti ar komandu renice šādā formā:

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

No parauga augšdaļas, kas redzama zemāk, teampe + jaukums ar PID 1055 tagad ir -12 , un visiem lietotāja apache piederošajiem procesiem ir -2 .

Joprojām izmantojot šo izvadi, jūs varat redzēt formulu PR = 20 + NI statīvi,

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

Visas izmaiņas, ko veicat ar renice komandu lietotāja procesos, ir piemērotas tikai līdz nākamajai pārstartēšanai. Lai iestatītu pastāvīgas noklusējuma vērtības, izlasiet nākamo sadaļu.

Kā iestatīt konkrēta lietotāja procesu noklusējuma jauko vērtību

Failā /etc/security/limits.conf varat iestatīt konkrēta lietotāja vai grupas noklusējuma jauko vērtību. Tās galvenā funkcija ir noteikt resursu ierobežojumus lietotājiem, kuri ir pieteikušies, izmantojot PAM.

Lietotāja ierobežojuma noteikšanas sintakse ir šāda (un failā ir izskaidrotas dažādu kolonnu iespējamās vērtības):

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

Tagad izmantojiet zemāk esošo sintaksi, kur cietais nozīmē cieto saišu un mīksto līdzekļu ieviešanu - mīksto robežu izpildi.

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

Alternatīvi izveidojiet failu sadaļā /etc/security/limits.d/, kas ignorē iestatījumus galvenajā failā iepriekš, un šie faili tiek lasīti alfabētiskā secībā.

Vispirms izveidojiet failu /etc/security/limits.d/tecmint-priority.conf lietotāja tecmint:

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

Pēc tam pievienojiet šo konfigurāciju:

tecmint  hard  priority  10

Saglabājiet un aizveriet failu. Turpmāk jebkuram tecmint piederošam procesam būs jauka vērtība 10 un PR 30.

Lai iegūtu vairāk informācijas, izlasiet jauku un atdzejojošu cilvēku rokasgrāmatas:

$ man nice
$ man renice 

Jūs varētu vēlēties arī izlasīt šos rakstus par Linux procesu pārvaldību.

  1. Kā atrast un nogalināt skriešanas procesus Linux
  2. rokasgrāmata komandām Kill, Pkill un Killall, lai izbeigtu procesu Linux
  3. Kā pārraudzīt sistēmas lietošanu, pārtraukumus un Linux serveru problēmu novēršanu
  4. CPUTool - ierobežojiet un kontrolējiet jebkura procesa procesoru Linux operētājsistēmā

Šajā rakstā mēs īsi izskaidrojām kodola plānotāju, procesa prioritāti, aplūkojām, kā palaist programmu vai komandu ar modificētu prioritāti un arī mainīt aktīvo Linux procesu prioritāti. Jūs varat dalīties domās par šo tēmu, izmantojot zemāk esošo atsauksmju veidlapu.