Supravânzare ( ing. Supravânzare ) - vânzarea serviciilor furnizorului peste volumul de resurse care pot fi furnizate.
Sinonim : overbooking _ _ _
În ceea ce privește vânzarea de servicii de găzduire , supravânzarea înseamnă vânzarea puterii de calcul în volume mai mari decât le poate furniza hardware-ul serverului.
Inițial, supravânzarea a fost asociată cu vânzarea de servicii de găzduire partajată și a vizat în principal resurse precum traficul și spațiul pe hard disk. Odată cu popularizarea serviciilor Virtual Private Server (VPS/VDS) , cuvântul „overselling” a devenit cunoscut unui public larg și este o practică comună pentru majoritatea furnizorilor de găzduire .
Supravânzarea se bazează pe faptul că majoritatea clienților nu folosesc niciodată pe deplin resursele care le sunt alocate prin planul tarifar. Prin urmare, furnizorii de găzduire revind de mai multe ori capacitatea serverului, ceea ce ajută la reducerea costurilor cu energie și la reducerea timpului de nefuncționare a capacității neutilizate. Ca urmare, acest lucru duce la o scădere a prețului serviciilor.
Exemplu:
Pe un server cu 32Gb de RAM, puteți avea 32 de servere virtuale dedicate , cărora li se vor aloca câte 1 Gb de RAM fiecare, apoi toți clienții au garantat că își vor primi RAM la sarcină maximă. De obicei, pe un server de această capacitate sunt plasate mult mai multe mașini virtuale.
Teoretic, este posibilă o situație în care toate VPS/VDS încearcă simultan să folosească capacitățile alocate acestora, iar serverul fizic va fi încărcat la limită. Atunci clienții furnizorului pot observa consecințele supravânzării: încetinirea serviciilor, erori, indisponibilitatea periodică a site-ului. Majoritatea furnizorilor de găzduire monitorizează cu atenție sarcina de pe serverele lor fizice și nu permit astfel de situații. Sistemele de monitorizare redistribuie în timp util clienții „cu probleme” între alte servere, ceea ce se întâmplă neobservat de clienții înșiși.
Sistemul de operare Linux numără memoria utilizată folosind mai multe valori: VIRT, RES, SHM.
VIRT (virtual size of a process) - cantitatea virtuală de memorie consumată de proces. Aceasta este suma memoriei utilizate în prezent, a memoriei rezervate de acest proces pentru nevoile sale, a fișierelor de pe disc pe care le folosește procesul (cel mai adesea biblioteci) și a memoriei partajate cu alte procese. VIRT arată câtă memorie poate obține un proces în prezent.
RES (dimensiune rezidentă) - cantitatea de memorie utilizată în prezent. Este întotdeauna mai mică decât VIRT, deoarece majoritatea programelor folosesc aceleași biblioteci.
SHR - Arată câtă memorie VIRT este utilizată ca total.
De exemplu, programul folosește doar o parte din unele funcții ale bibliotecii. Astfel, întreaga bibliotecă va fi scrisă în VIRT și SHM, iar doar partea care este utilizată efectiv va intra în RES.
Când se calculează memoria folosită pe OpenVZ în interiorul containerului, se ia în considerare VIRT, care este mai mult decât memoria efectivă consumată, dar poate fi folosit sistemul de operare invitat. Astfel, atunci când vindeți VPS/VDS prin intermediul memoriei VIRT, puteți vinde mai mult decât memoria disponibilă pe serverul părinte.
Pentru supravânzarea memoriei, sunt utilizați parametrii vmguarpages, oomguarpages și vmguarpages - aceasta este alocarea memoriei containerului, iar oomguarpages este limita de memorie pentru proces.
Supravânzare CPULimita de utilizare a procesorului este setată la pornirea containerului prin intermediul parametrilor cpuunits (valoarea minimă garantată a timpului CPU pentru VDS), cpulimit (valoarea maximă pe care o poate folosi VDS, în procent) și cpus (numărul de nuclee utilizate de VDS).
Cpulimit va funcționa când serverul este inactiv și unuia dintre containere îi lipsește valoarea cpuunits, apoi poate folosi până la n% din nucleu (core, valoare în CPU).
Supravânzarea memoriei se efectuează după același principiu ca și în OpenVZ , cu o diferență, este considerată RES. Aceasta este de fapt memorie folosită. De exemplu, aveți n procese folosind biblioteca libc, fiecare proces consumă 10 MB, dintre care 2 MB sunt directive de la libc, deci (10-2) * n + 2 va fi calculat și indiferent cât de mult a rezervat în VIRT . O dată la fiecare 5 secunde, dacă sunt depășite, procesele sunt oprite de un mecanism de tratare a memoriei kernel numit OOMkiller .
Supravânzare CPUProcesorul este, de asemenea, limitat conform unui principiu similar cu OpenVZ , o limită soft de până la 1 nucleu este setată pe VPS/VDS, există și o limită rigidă care este declanșată de o comandă, dacă 1 nucleu a fost deja dat către container și încărcătura este păstrată mult timp și nu cade, atunci va fi activată o limită rigidă.
FreeBSD Jail & OpenVZ HDD oversellingPe ambele virtualizări, vom supravinde spațiul pe disc vânzându-l de mai multe ori. În acest caz, furnizorul de găzduire trebuie să se asigure în mod constant că rămâne suficient spațiu liber, în cazul în care unul (mai multe) dintre containere (VDS) necesită tot ceea ce se presupune că este.
Limitarea utilizării discului în acest caz ar putea fi implementată prin limitarea operațiunilor I/O, dar, în acest moment, această limită este greu de implementat. Șoferul final nu știe de unde a fost trimisă comanda de citire și nu o poate calcula pentru un anumit container. Prin urmare, recurg la limitarea simultană a fișierelor deschise - descriptori de fișiere . Când este atinsă limita de fișiere deschise, sistemul de operare invitat va da o eroare despre noduri terminate .
Pe această virtualizare, este posibilă supravânzarea procesorului și a memoriei RAM.
Supravânzarea RAMSupravânzarea RAM se poate face folosind tehnologiile Kernel SamePage Merging (KSM), Ballooning și Swapping .
KSM funcționează după următorul principiu:
Primul pas este să configurați KSM pentru a scana zonele de memorie, în mod implicit, virtualizarea KVM nu este configurată să funcționeze cu KSM. Odată configurat, KSM începe să scaneze memoria RAM pentru date identice. Când KSM găsește 2 sau mai multe potriviri, marchează datele ca partajate și înlocuiește toate locațiile de memorie identice cu un singur bloc și le face protejate la scriere. Dacă ulterior unul dintre procesele care utilizează o astfel de memorie solicită modificarea informațiilor, KSM creează o nouă zonă prin copierea blocului protejat la scriere.
Balonare:
Hypervisorul (programul de management al sistemului de operare) trimite o solicitare către sistemul de operare invitat (VDS) pentru a returna o parte din RAM sub controlul său:
Hipervizorul folosește această memorie la discreția sa, acolo unde are nevoie de ea în acest moment. Când memoria din cloud devine liberă, hypervisorul o poate returna înapoi la sistemul de operare invitat de la care a fost luată:
Schimbarea:
Supravânzarea memoriei utilizează fișierul de paginare de pe hard disk.
Supravânzare CPUSupravânzarea CPU este susținută de hypervisorul KVM prin planificatorul Linux și mecanismul cgroups , prin prioritizarea anumitor procese. În acest caz, sistemul de operare invitat nu va întâmpina probleme dacă nu utilizează procesorul la 100%. Cu supravânzarea CPU, nu puteți vinde mai multe nuclee la un VDS decât există pe server și nu trebuie să permiteți o încărcare mai mare de 80% pe sistem, deoarece supravânzarea în continuare poate reduce semnificativ performanța atât a sistemului de operare invitat, cât și a sistemului. serverul în sine.