Команде nice
и renice
омогућавају прецизно подешавање начина на који оперативни систем третира процесе, регулишући њихов приоритет. У овом тексту, истражићемо како их можете користити у Линук и другим системима који су слични Јуникс оперативном систему, као што је macOS.
Разумевање процеса
Унутар вашег Линукс или Јуникс система, велики број процеса се извршава чак и пре него што ви сами покренете било коју апликацију. Већина ових процеса представљају виталне компоненте самог Линукса, или су то помоћни процеси који подржавају графичко окружење радне површине. Много тога се одвија у позадини. Наравно, системски ресурси и процесорско време су ограничени. Линук језгро управља свим тим процесима.
Језгро је одговорно за одлучивање који процеси добијају пажњу и ресурсе у датом тренутку, а који морају да чекају. Оно непрекидно управља процесима и њиховим приоритетима, како би обезбедило да рачунар ради што је глаткије могуће и да сви процеси добију свој део ресурса. Одређени процеси имају приоритет. Они су толико важни за сам рад рачунара да се о њиховим потребама мора водити рачуна пре свега, на пример пре потреба вашег прегледача интернета.
Значење „nice“ вредности
Један од критеријума који се користе при одређивању начина на који ће језгро третирати процес је „nice“ вредност. Сваки процес има своју „nice“ вредност. Ова вредност је цео број у распону од -19 до 20. Сви процеси се покрећу са „nice“ вредношћу нула.
Суштина је да што је „nice“ вредност већа, процес је „бољи“ према осталим процесима. Другим речима, висока „nice“ вредност говори језгру да је процес спреман да чека. Негативан број је супротан од овог. Што је негативна „nice“ вредност већа, процес је „себичнији“. Он покушава да добије што је више процесорског времена могуће, без обзира на остале процесе.
Можемо користити команду nice
да поставимо „nice“ вредност када је процес покренут, а можемо користити команду renice
да подесимо „nice“ вредност већ покренутог процеса.
Команда „nice“
Командом nice
можемо прилагодити „nice“ вредност програма док га покрећемо. Ово нам омогућава да повећамо или смањимо приоритет који језгро даје процесу у односу на остале процесе.
Замислимо да је програмер направио програм под називом ackermann
. Овај програм израчунава Акерманове функције. Он захтева доста процесора и меморије. Програмер може покренути програм помоћу следеће команде:
./ackermann
Можемо користити команду top
да видимо покренут програм.
top
На горњој листи можемо видети детаље програма ackermann
. „Nice“ вредност је број у колони „NI“. Она је постављена на нулу, као што смо очекивали.
Хајде да поново покренемо програм, али га овог пута учинимо мање захтевним. Поставићемо „nice“ вредност на 15 за програм ackermann
на следећи начин. Укуцајте nice
, размак, -15
, још један размак, а затим име програма који желите да покренете. У нашем примеру, наш измишљени програмер користи ./ackermann
.
nice -15 ./ackermann
Треба напоменути да -15
није минус петнаест, већ позитивних петнаест. Симбол -
је неопходан да би nice
разумео да прослеђујемо параметар. Да бисте означили негативни број, морате унети два симбола -
.
Ако сада поново покренемо команду top
, можемо видети промену у понашању програма ackermann
.
top
Са „nice“ вредношћу 15, програм ackermann
више не троши највише процесорског времена. GNOME
и Rhythmbox
користе више. Успели смо да „обуздамо“ програм ackermann
.
Сада, урадимо супротно и дајмо програму ackermann
негативну „nice“ вредност. Обратите пажњу на употребу два симбола -
. Да бисте апликацију учинили „себичнијом“ и мање „добром“, морате да користите команду sudo
. Свако може учинити своју апликацију „бољом“, али само суперкорисници могу учинити да она буде „себичнија“.
sudo nice --10 ./ackermann
Хајде да покренемо команду top
и видимо шта се променило.
top
Овог пута, програм ackermann
има „nice“ вредност -10. Он се вратио на врх листе и троши више процесорског времена него раније.
Команда „renice“
Команда renice
нам омогућава да подесимо „nice“ вредност процеса који је већ покренут. Не морамо да га заустављамо и поново покрећемо са командом nice
. Можемо да подесимо нову вредност док процес ради.
Команда renice
узима ИД процеса или ПИД (Process ID) као параметар командне линије. Можемо или издвојити ПИД из колоне „PID“ у излазу команде top
, или можемо користити ps
и grep
да пронађемо ПИД, као што је приказано у наставку. Наравно, морате унети име вашег корисника уместо dave
, и име процеса који вас занима уместо ackermann
.
ps -eu dave | grep ackermann
Сада када имамо ПИД, можемо га користити са командом renice
. Вратићемо програм ackermann
на „боље“ понашање са „nice“ вредношћу пет. Да бисте променили „nice“ вредност покренутом процесу, морате користити команду sudo
. Имајте на уму да нема симбола -
пре параметра 5
. Он вам није потребан за позитивне бројеве, а потребан вам је само један, а не два за негативне бројеве.
sudo renice -n 5 2339
Добијамо потврду да је renice
променио „nice“ вредност. Приказује нам стару и нову вредност.
Језгро обично одлично ради када је у питању руковање приоритетима и расподела процесорског времена и системских ресурса. Али ако имате дуг задатак који захтева процесор и није вам битно када ће се завршити, ваш рачунар ће радити лакше ако подесите вишу „nice“ вредност за тај задатак. Тако ће свима бити „лепше“.