CPU (angl. central processing unit) – turbūt žinomiausias ir dažniausiai naudojamas trumpinys IT sferoje. Tai – pagrindinis kompiuterio komponentas, kuriame vykdomos pagrindinės loginės, aritmetinės bei įvesties/išvesties (angl. input/output) operacijos, kurios vėliau komandų pavidalu perduodamos programinei įrangai. Be šio komponento neįmanomas nei kompiuterių, nei serverių veikimas.
Procesoriai anksčiau galėdavo įgyvendinti tik po vieną procesą vienu metu. Tuo metu didesnio poreikio ir nebuvo – užtekdavo, kad procesorius atliktų vieną apskaičiavimą ir pateiktų komandą tai programai, su kuria yra dirbama. Tačiau vėliau, nors procesorių pajėgumas ir augo, norimų atlikti procesų kiekis taip pat didėjo. Nors procesoriai skaičiavimus vykdydavo itin greitai, tai vis tiek būdavo tik vienas procesas vienu metu. Taip pat kildavo ir kita problema – procesoriai atliekantys apskaičiavimus itin dideliu taktiniu dažnu pradėdavo kaisti, todėl jiems būdavo reikalingas efektyvesnis vėsinimas naudojantis didesnį kiekį elektros energijos. Dėl šių priežasčių buvo nuspręsta padalinti CPU į kelis skirtingus branduolius, kurie galėtų atlikti kelis skirtingus apskaičiavimus vienu metu nedidinant elektros sąnaudų.
Šiuo metu būtų sunku rasti kompiuterį, kuris turėtų vieną branduolį. Netgi išmanusis telefonas, turintis vieną CPU branduolį, jau gali būti laikomas atgyvena. Taip yra todėl, kad atskiri branduoliai atlieka skirtingus procesus vienu metu ir žymiai efektyviau išnaudoja suteikiamą resursą. Kol vienas procesas vykdomas, kitas nelaukia eilėje ir yra vykdomas lygiagrečiai. Vieno branduolio procesoriaus naudojimas būtų tiesiog resursų švaistymas.
Toks užduočių atlikimas yra itin svarbus ne tik kompiuteriuose ar išmaniuosiuose įrenginiuose, bet taip pat ir serveriuose. Serveriu, kuris yra naudojamas hostingui, vienu metu naudojasi keli skirtingi vartotojai, norintys vienu metu atlikti tam tikrus apskaičiavimus. Todėl serveriuose CPU skaidymas į kelis branduolius tampa neišvengiama sąlyga efektyviam sistemos veikimui. Šiuolaikiniuose serveriuose branduolių kiekis gali varijuoti nuo 4 iki 28, ar netgi dar didesnio branduolių kiekio procesoriuje. Mūsų prižiūrimų serverių CPU branduoliai dar efektyvesniam galingų procesorių panaudojimui yra skaidomi į gijas (angl. threads). Vienas branduolys yra skaidomas į dvi atskiras gijas. Užsakydami serverio nuomos planą ties stulpeliu Procesorius matysite, kiek skirtingų gijų galėsite naudoti savo virtualiai dedikuotame serveryje. Kiekviena gija gali vykdyti atskirą užduotį vienų metu lygiai taip pat, kaip vykdytų atskiras branduolys (paprastumo ir aiškumo dėlei toliau kalbėdami apie gijas ir jų kiekį mūsų serveriuose, naudosime visiems priimtiną sąvoką „branduolys”). Vykdymo greitis, priklausomai nuo serverio paslaugos, gali būti atliekamas nuo 1.8GHz iki 2.6GHz taktiniu dažniu. Plačiau apie tai, kas yra taktinis dažnis, rašoma sekančiame skyriuje.
Didžioji dalis mūsų naudojamų serverių turi 2.6GHz (milijardas Hz) procesorius – tokį kiekį instrukcijų gali apdoroti vienas branduolys per sekundę. Todėl lyginant skirtingų teikėjų serverių nuomos paslaugas, reikia atsižvelgti ne tik į branduolių kiekį, bet ir į suteikiamų GHz kiekį. Jeigu turėsite serverio nuomos paslaugą su keturiais branduoliais, palaikančiais 1.2GHz taktinį dažnį, procesai bus atliekami lėčiau nei dviejų branduolių 2.6GHz taktinį dažnį palaikančiame serveryje.
Užsakant mūsų teikiamas serverių nuomos paslaugas galite rinktis tarp 1 ir 16 branduolių. Kadangi reikiamo branduolių kiekio poreikio nustatymas yra sudėtinga užduotis net ir patyrusiam serverio naudotojui, visada rekomenduojame pradėti nuo mažesnių planų. Stebint veikiančio serverio CPU išnaudojimą galėsite nuspręsti ar reikalingas plano padidinimas. Planą padidinti galite bet kuriuo metu ir papildomas apmokėjimas nebus reikalingas, nes didinant planus yra atliekamas proporcingas perskaičiavimas, t.y. didinant planą, mažėja jo galiojimo terminas, atsižvelgiant į plano kainą.
Tam, kad galėtumėte matyti ar suteikiamų CPU resursų Jūsų serveriui pakanka, galite pasinaudoti mūsų monitoringo sistemos atvaizduojamais grafikais klientų sistemoje. Prisijungus prie klientų sistemos ir atsidarius serverio nuomos paslaugą, matysite skiltį Serverio būklė, kurioje atvaizduojami serverio grafikai. Norint išsamiai apžvelgti CPU išnaudojimo situaciją, reikėtų išanalizuoti kelis skirtingus grafikus. Pirmasis – serverio procesoriaus būklė.
Tai – pagrindinis grafikas, rodantis procesoriaus apkrovimą procentais. Nurodoma, kiek procesoriaus resursų naudojama esamu metu, vidutiniškai ir kokia buvo pasiekta maksimali reikšmė. CPU dar papildomai fiksuoja šias reikšmes:
User CPU (us) – reikšmė, rodanti, kokią procentinę dalį procesoriaus naudoja pagrindiniai procesai – komandinė eilutė, kompiliatorius, duomenų bazės, web tarnybos ir pan. Didžiausią procentinę dalį CPU resurso turėtų naudoti šis parametras. Jeigu user CPU vidutinė reikšmė yra arti 100%, turėtumėte apsvarstyti plano keitimą į didesnį, nes tai reiškia, kad Jums nebe užtenka procesoriaus pajėgumų.
Nice CPU (ni) – kiek procentiškai laiko procesorius aptarnavo žemo prioriteto procesus. Ši reikšmė parodo, kiek procesoriuje yra fone veikiančių žemo prioriteto procesų. Jeigu Jūsų serveryje nėra Jums žinomų nuolatos atliekamų veiksmų fone, ši reikšmė turėtų būti 0%. Kitu atveju gali būti, kad Jūsų serveryje veikia nepageidaujamas procesas.
System CPU (sy) – reikšmė rodanti, kiek laiko procentiškai CPU resursą naudojo mazgo branduolys (angl. kernel). Kai serveris turi atlikti kokius nors veiksmus, susijusius su sistema, pavyzdžiui, skirstyti laikinąją atmintį, atlikti tam tikrus I/O veiksmus ar sukurti paveldimą (angl. child) procesą – tuomet CPU resursai naudojami branduolio reikmėms. Laikas, kurį naudoja system CPU, turėtų būti kaip įmanoma mažesnis.
Iowait CPU (wa) – iš esmės, skaitymas ar rašymas į diską, yra lėtas veiksmas, lyginant su procesoriaus greičiu, todėl CPU resursas yra kartais išnaudojamas neproporcingai. Dažniausiai, kai procesorius pradeda skaitymo ar rašymo operaciją, jis turi laukti rezultato. Tuo metu resursas yra užimtas, nors ir nenaudojamas. Kitaip tariant, jis neveikia, kol laukia I/O operacijos pabaigos. Laiką, kurį CPU praleido šioje būsenoje, parodo Iowait statistika. Jeigu stebėdami grafiką dažnai pastebite šią iowait dedamąją, serveriui rekomenduojame užsakyti papildomą SSD komponentą, kuris leis vykdyti daugiau operacijų su disku.
Idle CPU (id) – parodo, kiek procentiškai laiko procesorius neatliko jokių veiksmų. Sudėjus user, nice ir idle reikšmes turėtumėte gauti arti 100%. Kitu atveju, reikėtų ieškoti galimos problemos serveryje.
Stebėdami serverio procesoriaus būklę galite matyti, kiek apkrautas yra Jūsų CPU resursas ir spręsti, ar suteikiamų resursų serveriui užtenka bei matyti, ar serveris nenaudoja CPU resurso kitaip, nei turėtų. Svarbu pažymėti, kad šios reikšmės grafikuose yra matomos tik konteinerių serverių nuomos paslaugų naudotojams.
Linux KVM serverių naudotojai grafike matys tik user CPU reikšmę. Kitas reikšmes galima matyti prisijungus prie serverio ir terminale įvykdžius komandą top. Reikšmės bus nurodomos eilutėje „%Cpu(s):” sutrumpinimais, kuriuos matote prie pilno reikšmės pavadinimo aukščiau. Papildomai pateikiamos ir reikšmės, kurios nefiksuojamos grafikuose: hi (hardware interrupt), si (software interrupt), st (steal). Šios trys reikšmės nėra fiksuojamos virtualiuose serveriuose. Terminale įvykdytos komandos top rezultato pavyzdys:
%Cpu(s): 12.02 us, 1.72 sy, 0.03 ni, 85.75 id, 0.47 wa, 0.0 hi, 0.0 si, 0.0 st
Windows serverių naudotojai matys tik vieną reikšmę – user CPU, kuri bendrai apibrėš, kiek procentų procesorius yra naudojamas. Norint detaliau matyti CPU išnaudojimą, galima pasitelkti standartiškai Windows sistemoje įdiegtą įrankį – Task Manager.
Dar vienas grafikas, padedantis suprasti ar Jūsų serveris veikia sklandžiai – serverio apkrovimo būklė. Klientų sistemoje matomas apkrovimas yra fiksuojamas dviem skirtingais laiko tarpais: kas minutę ir kas 5 minutes. Taip pat galite matyti ir tris papildomas reikšmes: esamas (angl. current), vidutinis (angl. average) ir didžiausias (angl. maximum). Šis grafikas yra matomas konteinerių serverių nuomos paslaugos turėtojams.
Deja, dėl KVM virtualizacijos niuansų, šis grafikas nėra braižomas nei Linux KVM, nei Windows KVM serverių naudotojams. Tačiau apkrovimą Linux serveriuose galite matyti prisijungę prie serverio ir paleidę komandą uptime, kurios rezultate matysite „load average:” ir tris skaitines reikšmes nuo kairės į dešinę: paskutinės minutės vidutinis, penkių minučių vidutinis ir penkiolikos minučių vidutinis apkrovimas. Terminale įvykdytos komandos rezultato pavyzdys:
14:11:17 up 352 days, 3:18, 1 user, load average: 1.40, 1.42 , 1.20
Apkrovimo apskaičiavimas priklauso nuo naudojamų branduolių kiekio. Todėl analizuodami savo serverio apkrovimą turite atsižvelgti į turimą CPU branduolių kiekį.
Vieno branduolio serveris:
Rekomenduojama, kad procesorius nepasiektų 1.00 vidutinės reikšmės. Pavyzdžiui, jeigu reikšmė yra 0.70, tai serveris veikia sklandžiai, tačiau reikėtų patikrinti veikimą tam, kad ateityje nebūtų pasiekiama 1.01 ar didesnė reikšmė. Jeigu reikšmė jau pasiekė 1.00, turite nedelsiant peržiūrėti procesus ir užtikrinti, kad jų kiekis neaugtų. Jeigu reikšmė yra 5.00 ir daugiau, tai jau turi didelę įtaką serverio veikimui ir sistemos sulėtėjimas bus pastebimas serverio naudotojams.
Dviejų ir daugiau branduolių serveris:
Turint daugiau nei vieną branduolį, apkrovimas skaičiuojamas pagal turimų branduolių kiekį. Pavyzdžiui: jeigu procesorius turi du branduolius, tai apkrovimo reikšmė 2.00 reikš, kad nėra laukiančių procesų, visi vykdomi iškart, kai tik gaunama užklausa. O jeigu procesorius turi keturis branduolius – 4.00 reikšmė nurodys, kad procesorius neturi laukiančių užklausų. Ir taip keliant iki maksimalaus 16 branduolių kiekio, kur 16.00 rodys, kad serverio procesorius nėra apkraunamas laukiančiais procesais.
CPU resurso veikimo stebėjimas yra viena svarbiausių užduočių serverio administratoriui, norint išlaikyti serverio darbą stabilų ir greitą. Todėl šio serverio komponento priežiūrai reikia suprasti tiek patį CPU veikimo principą, tiek grafikuose naudojamas sąvokas ir reikšmes. Atlikdami nuolatinį CPU veikimo stebėjimą, galite matyti ar turimas serverio nuomos planas tenkina Jūsų poreikį. Atsižvelgdami į tai galite atlikti tam tikrus pakeitimus, kad naudotojai ar serverio programinė įranga galėtų juo naudotis be papildomų trukdžių. Be abejo, nors CPU laikomas vienu iš svarbiausių komponentų serveriuose, kiti komponentai, tokie kaip RAM ar disko stabilus veikimas taip pat yra labai svarbus. Nekorektiškas bent vieno komponento veikimas gali daryti kritinę įtaką kito kompenento veikimui, todėl svarbi visapusiška resursų išnaudojimo priežiūra.