Dimensionarea procesorului pentru o masina virtuala

Indiferent daca folosesti aplicatii gazduite in data center-ul on premises sau in cloud-ul unui furnizor de astfel de servicii, pana la urma acele aplicatii sunt instalate pe servere, fie ele fizice (situatie din ce in ce mai rar intalnita astazi), fie sub forma de masina virtuala (situatie specifica unui mediu nativ cloud sau unei organizatii care constientizeaza beneficiile solutiilor de virtualizare). Iar aceste servere au nevoie de un procesor dimensionat corect pentru a putea livra performantele asteptate. Alegerea si alocarea corecta a resurselor de compute sunt task-uri critice pe care administratorii de sisteme trebuie sa le efectueze in cunostiinta de cauza si in concordanta cu cerintele dezvoltatorilor de aplicatii.

Principalele caracteristici dupa care este dimensionat procesorul unui server sunt frecventa de ceas (tact), numarul de nuclee, numarul de fire de executie (threads), si tipul si dimensiunea memoriei cache.

Frecventa de ceas este un parametru fundamental pentru un procesor. Frecventa se masoara in gigahertzi (GHz) si ne spune cat de repede poate un procesor sa indeplineasca instructiunile furnizate. Cu cat frecventa este mai mare, cu atat performantele vor fi mai bune si aplicatia se va incarca mai repede. Un procesor mai rapid va putea de asemnea sa ruleze mai multe aplicatii simultan, sau poate rula chiar o aplicatie foarte complexa (de tip machine learning de exemplu).

Numarul de nuclee. Un nucleu este un unitate de calcul independenta care primeste task-uri pe care le executa intr-o maniera secventiala. Arhitecturile procesoarelor actuale este de tip multicore, insemnand ca un procesor este format din mai multe nuclee, ceea ce permite executarea mai multor operatiuni in paralel, sporind dealtfel performantele aplicatiei.

Numarul de fire de executie. Un core sau un un nucleu reprezinta o componenta hardware a procesorului. Un thread este o versiune virtualizata a unui core de procesor. Intel foloseste tehnologia hyper-threading, iar AMD foloseste simultaneous multithreading pentru a sparge un core fizic in mai multe instante virtuale. De exemplu, un procesor cu 8 nuclee poate avea 16 fire de executie, aspect care creste si el de asemenea performantele totale ale procesorului si implicit a aplicatiei care se afla peste procesor.

Memoria de tip cache. Cache-ul este un tip de memorie de mare viteza care se afla intre procesor si memoria RAM cu care lucreaza in mod normal procesorul. Memoria cache stocheaza temporar instructiunile si variabilele cu care procesorul lucreaza cel mai des intr-o anumita perioada de timp, eliminand timpul de acces in memoria RAM. Memoria cache este impartita in mai multe nivele:

  • cache de nivel 1 – acest cache este de obicei integrat in cipul procesorului si ofera cea mai mica latenta, dar si cea mai mica capacitate de stocare
  • cache de nivel 2 – ofera o capacitate mai mare de stocare, dar si o latenta mai mare
  • cache de nivel 3 – ofera cea mai mare capacitate, dar si cea mai mica viteza de accesare

Chiar daca traim in epoca in care “the bigger, the better” este dictonul care ne guverneaza alegerile in materie de tehnologia, alegerea procesoruui trebuie sa fie facuta in conformitate cu workload-uri care se doresc a fi executate. Acestea pot varia de la rularea unui server web sau a unui server de email, prelucrarea imaginilor, operatiuni de statistica sau big data / machine learning. Cerintele variaza si trebuie urmarit cel mai bun raport pret/performanta si cu cel mai mare randament pe o perioada de 3-5 ani.

Mihai Dumitrascu, Sr Systems Engineer