Kuinka asettaa Linux-prosessin prioriteetti mukavilla ja renice-komennoilla


Tässä artikkelissa selitämme lyhyesti ytimen ajoittimen (tunnetaan myös nimellä prosessin ajoitus) ja prosessin prioriteetin, jotka ovat muitakin aiheita. tämän oppaan soveltamisalaan. Sitten sukeltaamme hieman Linux-prosessien hallintaan: katsotaan, kuinka ohjelma tai komento suoritetaan muokatulla prioriteetilla ja myös Linux-prosessien prioriteetin muuttaminen.

Lue myös: Kuinka seurata Linux-prosesseja ja asettaa prosessirajoituksia käyttäjäkohtaisesti

Linux-ytimen ajoituksen ymmärtäminen

Ytimen ajastin on ytimen yksikkö, joka määrittää sopivimman prosessin kaikista suoritettavista prosesseista seuraavaksi suoritettavaksi; se jakaa prosessoriajan järjestelmän ajettavien prosessien välillä. Suoritettava prosessi on prosessi, joka odottaa vain CPU-aikaa, se on valmis suoritettavaksi.

Ajastin muodostaa Linuxin moniajon ytimen, ja se käyttää prioriteettipohjaista ajoitusalgoritmia valitakseen järjestelmän ajettavien prosessien välillä. Se luokittelee prosessit ansioituneimpien sekä suorittimen ajantarpeen perusteella.

Prosessin prioriteetin ja mukavan arvon ymmärtäminen

Ydin tallentaa paljon tietoa prosesseista, mukaan lukien prosessin prioriteetti, joka on yksinkertaisesti prosessiin liitetty aikataulutusprioriteetti. Korkeamman prioriteetin prosessit suoritetaan ennen alhaisemman prioriteetin prosessit, kun taas saman prioriteetin prosessit ajoitetaan peräkkäin, toistuvasti.

Linuxissa on yhteensä 140 prioriteettia ja kaksi erillistä prioriteettialuetta. Ensimmäinen on kiva arvo (mukavuus), joka vaihtelee välillä -20 (korkein prioriteettiarvo) 19 (pienin prioriteettiarvo) ja oletusarvo on 0, tämä selvitetään tässä oppaassa. Toinen on reaaliaikainen prioriteetti, joka vaihtelee oletuksena välillä 1 - 99 ja sitten 100 - 139. on tarkoitettu käyttäjätilaan.

Yksi tärkeä Linuxin ominaisuus on dynaaminen prioriteettipohjainen ajoitus, joka mahdollistaa prosessien mukavan arvon muuttamisen (lisäämisen tai pienentämisen) tarpeidesi mukaan, kuten tulemme näkemään myöhemmin.

Kuinka tarkistaa Linux-prosessien hyvä arvo

Nähdäksemme prosessien mukavia arvoja voimme käyttää apuohjelmia, kuten ps, top tai htop.

Voit tarkastella prosessien mukavia arvoja ps-komennolla käyttäjän määrittämässä muodossa (tässä NI-sarake näyttää prosessien mukavuuden).

ps -eo pid,ppid,ni,comm

Vaihtoehtoisesti voit käyttää huippu- tai htop-apuohjelmia nähdäksesi Linuxin prosessien mukavia arvoja kuvan mukaisesti.

top
htop

Ero PR:n tai PRI:n ja NI:n välillä

Yllä olevista ylhäällä- ja htop-ulostuloista huomaat, että siellä on sarake nimeltä PR ja PRI. joka osoittaa prosessin prioriteetin.

Tämä tarkoittaa siis, että:

  • NI – on kiva arvo, joka on käyttäjätilan käsite
  • PR tai PRI – on prosessin todellinen prioriteetti, kuten Linux-ydin näkee.
PR- tai PRI-arvojen laskeminen
Total number of priorities = 140
Real time priority range(PR or PRI):  0 to 99 
User space priority range: 100 to 139

Mukava arvoalue (NI): -20 - 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.

Mutta jos näet rt-merkin alla olevassa kuvakaappauksessa näkyvän numeron sijaan, se tarkoittaa periaatteessa, että prosessi on käynnissä reaaliaikaisen aikataulutusprioriteetin alaisena.

Kuinka suorittaa komento annetulla mukavalla arvolla Linuxissa

Tässä tarkastellaan, kuinka priorisoida ohjelman tai komennon suorittimen käyttö. Jos sinulla on erittäin paljon suoritinta vaativa ohjelma tai tehtävä, mutta ymmärrät myös, että sen suorittaminen saattaa kestää kauan, voit asettaa sille korkean tai edullisen prioriteetin kiva-komennolla.

Syntaksi on seuraava:

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]

Tärkeä:

  • Jos arvoa ei anneta, nice asettaa prioriteetiksi oletuksena 10.
  • Komento tai ohjelma suoritetaan ilman mukavia oletusarvoja nollaksi.
  • Vain pääkäyttäjä voi suorittaa komennon tai ohjelman korotetulla tai korkealla prioriteetilla.
  • Tavalliset käyttäjät voivat suorittaa vain komennon tai ohjelman, jolla on alhainen prioriteetti.

Esimerkiksi sen sijaan, että käynnistäisit ohjelman tai komennon oletusprioriteetilla, voit käynnistää sen tietyllä prioriteetilla käyttämällä seuraavaa mukavaa komentoa.

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

Voit myös käyttää kolmatta menetelmää, joka on hieman hämmentävää etenkin negatiivisten mukavuusarvojen kohdalla.

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

Muuta prosessin ajoitusprioriteettia Linuxissa

Kuten aiemmin mainitsimme, Linux mahdollistaa dynaamisen prioriteettipohjaisen ajoituksen. Siksi, jos ohjelma on jo käynnissä, voit muuttaa sen prioriteettia renice-komennolla tässä muodossa:

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

Alla olevasta ylhäältä-esimerkistä teamspe+:n hienous PID:llä 1055 on nyt -12 ja kaikille käyttäjän apachen omistamat prosessit on -2.

Jos käytät edelleen tätä tulostetta, voit nähdä kaavan PR=20 + NI,

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

Kaikki muutokset, jotka teet renice-komennolla käyttäjän prosessien nice-arvoihin, ovat voimassa vain seuraavaan uudelleenkäynnistykseen asti. Jos haluat asettaa pysyviä oletusarvoja, lue seuraava osa.

Kuinka asettaa tietyn käyttäjän prosessien oletusarvoinen arvo

Voit määrittää tietyn käyttäjän tai ryhmän oletusarvoisen mukavan arvon /etc/security/limits.conf-tiedostossa. Sen ensisijainen tehtävä on määrittää resurssirajat PAM:n kautta kirjautuneille käyttäjille.

Syntaksi rajan määrittämiseksi käyttäjälle on seuraava (ja eri sarakkeiden mahdolliset arvot on selitetty tiedostossa):

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

Käytä nyt alla olevaa syntaksia, jossa hard – tarkoittaa kovien linkkien pakottamista ja pehmeä keino – pehmeiden rajojen noudattamista.

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

Vaihtoehtoisesti voit luoda osoitteeseen /etc/security/limits.d/ tiedosto, joka ohittaa yllä olevan päätiedoston asetukset, ja tiedostot luetaan aakkosjärjestyksessä.

Aloita luomalla tiedosto /etc/security/limits.d/tecmint-priority.conf käyttäjälle tecmint:

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

Lisää sitten tämä kokoonpano siihen:

tecmint  hard  priority  10

Tallenna ja sulje tiedosto. Tästä eteenpäin kaikkien tecmintin omistamien prosessien arvo on 10 ja PR 30.

Saat lisätietoja lukemalla nice- ja renice-man-sivut:

man nice
man renice 

Saatat myös haluta lukea nämä seuraavat Linux-prosessien hallintaa koskevat artikkelit.

  1. Kuinka löytää ja tappaa käynnissä olevia prosesseja Linuxissa
  2. Opas Kill-, Pkill- ja Killall-komentoihin prosessin lopettamiseksi Linuxissa
  3. Kuinka seurata järjestelmän käyttöä, katkoksia ja vianmääritys Linux-palvelimia
  4. CPUTool – Rajoita ja hallitse minkä tahansa prosessin suorittimen käyttöä Linuxissa

Tässä artikkelissa selostimme lyhyesti ytimen ajoitinta, prosessin prioriteettia, tarkastelimme ohjelman tai komennon suorittamista muokatulla prioriteetilla ja myös aktiivisten Linux-prosessien prioriteetin muuttamista. Voit jakaa ajatuksiasi tästä aiheesta alla olevan palautelomakkeen kautta.