Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Daca aveti nevoie de un proces care in mod normal necesita multa putere de calcul, in mod deosebit in cazul serverelor puse in productie, probabil ar fi bine sa va ganditi la o solutie care sa interzica procesului lansat sa monopolizeze ciclurile procesorului. Pe sistemele Linux, si in general pe sistemele din familia UNIX sau derivate, exista doua comenzi care ne permit sa setam o prioritate pe un proces din punct de vedere al cererilor de acces la procesor. Cele doua comenzi sunt „nice” si „renice„.

Cu „nice” putem lansa o comanda cu o anumita prioritate. De exemplu, luam urmatoarea comanda:

[root@localhost ~]# nice -n 19 /scripturi/backup

In exemplul de mai sus, sistemul va lansa in executie comanda „/scripturi/backup” cu prioritate 19.

Similar, daca avem un proces care a fost deja lansat in executie, ii putem schimba prioritatea folosind comanda „renice„. Pentru a folosi „renice” avem nevoie de PID-ul procesului care il putem gasi folosind comanda „ps„.

[root@localhost ~]# ps x | awk '/rsync/{print $1}'
12496
[root@localhost ~]#

In exemplul de mai sus am cautat PID-ul procesului creat de comanda rsync folosind comenzile „ps x” si „awk„. Pentru a-i schimba prioritatea, vom folosi comanda renice specificand si PID-ul procesului in cauza:

[root@localhost ~]# renice 19 -p 12496
12496: old priority 0, new priority 19
[root@localhost ~]#

Ca regula generala un proces este pornit cu prioritate 0, care inseamna prioritate medie. Prioritatile pot lua valori intre -20 si 19, unde -20 e cea mai mare prioritate care o poate avea un proces iar 19 e cea mai mica prioritate. Daca dorim ca un proces sa aiba o prioritate mai mica ii dam ca prioritate un numar pozitiv. Pentru o prioritate mai mare ii dam un numar negativ. In exemplele de mai sus procesele au primit prioritate 19, ceea ce inseamna ca accesul la procesor va fi mai rar decat in cazul unui proces cu prioritate 0 (medie) sau cu prioritate -20 (maxima).

Linux

2 Responses so far.

  1. Procesor says:

    Interesant, nu stiam ca poti da anumite prioritati proceselor. Daca daca este vorba de un proces care e destul de lung si ai nevoie sa fie prioritar doar pentru o anumita perioada de timp, cum il readuci la prioritatea standard? Pui 0 la renice?

  2. Sergiu says:

    Da, ii dai „renice 0 -p PID” si are din nou prioritate medie 🙂