Tutti gli articoli della Rubrica VPS:
- VPS: il trucco dei Core nei Cloud Server
- VPS (seconda parte): il trucco delle SSD
- VPS (terza parte): valutare le prestazioni
- VPS (quarta parte): troubleshooting di base in Linux
Ecco la prima tappa della nostra guida alla scelta di un servizio cloud Virtual Private Server: scopriamo tutti i segreti di core e vCPU.
Se non vi accontentate dell’offerta dei più famosi Amazon, Google e Microsoft, bastano un paio di ricerche su Google per trovare centinaia se non migliaia di differenti offerte di VPS (Virtual Private Server), public cloud o altri servizi che rientrano nella categoria IAAS (Infrastructure as a Service).
I prezzi sono estremamente vari e vanno da offerte persino inferiori ai 20 euro l’anno fino a diverse migliaia di euro al mese. In tutti questi casi stiamo parlando comunque di una fornitura di macchine virtuali basate per la maggior parte su Linux e in alcuni casi anche su Windows. Anche cercando di definire dei requisiti base (in termini di Ram, disco, core e traffico disponibile) le offerte variano moltissimo di prezzo, pur escludendo servizi accessori come backup o firewall. Come è possibile? Ci sono delle differenze a noi oscure che permettono di comprendere queste differenze? Oppure semplicemente si paga di più il brand? Il tipo di supporto? L’affidabilità del servizio?
Confronto impossibile?
È molto difficile trarre delle conclusioni certe, senza dubbio quasi tutti i parametri e i fattori citati concorrono a determinare il costo finale di una Vps, quello che è difficile è scegliere quale sia il servizio più adatto per garantire un livello di servizio accettabile e un supporto adeguato. Certamente non è corretto semplificare. Ad esempio pensare che i colossi come Microsoft, Google o Amazon siano necessariamente i migliori è sbagliato: in passato anche loro hanno sofferto di alcuni problemi più o meno significativi e anche le loro offerte – sempre più difficili da decifrare – nascondono trabocchetti e informazioni sempre non molto chiare.
Altro errore è pensare di potersi affidare – per scopi altri che non siano di puro test – a provider dell’ultim’ora che svendono i loro servizi o applicano politiche di overselling particolarmente pesanti. Il rischio naturalmente è di trovarsi con tempi di black-out particolarmente elevati, tempi di risposta lunghissimi e prestazioni ben al di sotto delle aspettative. Quando non si arrivi addirittura alla terminazione del servizio da un giorno all’altro.
Come nell’acquisto di tutti i servizi cloud uno dei fattori chiave da tenere ben presente è poi quali possano eventualmente essere i tempi di migrazione del servizio e di esportazione dei dati per il passaggio a una differente soluzione pubblica o a una alternativa entro le mura. Non vorrete trovarvi in qualche modo ostaggio del vostro stesso provider.
In questo primo articolo iniziamo parlando del numero di “core”, il parametro più utilizzato nella vendita di Vps per esprimere la capacità di calcolo. Nei prossimi articoli spiegheremo meglio come valutare le offerte in base alla Ram e alle risorse I/O (dischi, SSD, storage in generale) che vengono messe a disposizione. Analizzeremo poi gli altri parametri da valutare con estrema cura, come il licensing, la tipologia di supporto che viene offerta e tutti i servizi accessori.
I core questi sconosciuti
Il numero di core è certamente uno dei parametri più utilizzati in generale nella vendita di una Vps. Purtroppo però si tratta di un termine quanto mai generico che può dire davvero tutto e niente. Da un punto di vista hardware la capacità di elaborazione di un singolo core varia in base al processore: possono variare significativamente anche solo all’interno della stessa generazione di processori Xeon, i divari sono enormi considerando tutte le Cpu Intel e Amd che si possono trovare su server ancora in produzione.
La realtà purtroppo è ancor peggiore del previsto. Quando si parla di core di una Vps infatti non è neppure vero che i core di cui si parla siano quelli fisici. Innanzitutto bisogna considerare il possibile uso della tecnologia Hyperthread di Intel (che ormai è praticamente l’unico produttore di Cpu di fascia server): uno Xeon a 6 core con hyperthread mette a disposizione del sistema operativo 12 core. Per assegnare ad esempio con vSphere tutti i core di una singola CPU a 6 core a una VM devo selezionare nelle opzioni 12 vCPU, non 6 core. Dunque una vCPU (virtual CPU) o un core usato in ambito virtuale corrisponde in realtà a mezzo core della CPU fisica, non al core intero.
Se poi andate a leggere bene ciò che è scritto in piccolo sul contratto che avete firmato col vostro fornitore potreste scoprire che non è affatto vero che voi avete accesso esclusivo a quel mezzo core o vCPU che dir si voglia. I core infatti possono essere facilmente condivisi assegnandoli più volte a Vps diverse. Lato utente purtroppo è difficile avere un riscontro al livello di prestazioni finchè le Vps con cui si condividono le risorse sono sostanzialmente ferme o consumano pochissimi MHz. Anche alcuni provider di fascia medio/alta non fanno l’assegnazione vCPU/Core 1:1 ma assegnano almeno 2 Vps ad ogni vCPU. Un altro approccio molto diffuso è quello di creare alcuni pacchetti di Ram e Core, per cui ad esempio chi vuole molta Ram si porta a casa anche molti core e allo stesso modo chi ha bisogno di molti core deve comprare anche molta Ram.
Un approccio originale alla computazione delle prestazioni di calcolo era quello di Amazon con i suoi ECU. La sigla ECU sta per EC2 Compute Unit e si tratta di un valore calcolato come equivalente alla capacità di uno Xeon del 2006 da 1,7 GHz. Fortunatamente da metà 2014 questa unità è stata abbandonata e ora anche Amazon utilizza il termine vCPU nella definizione delle sue Vps o meglio istanze per usare il termine adottato dal colosso americano. Per ciascuna tipologia di macchine specifica poi quale tipologia di processori viene utilizzata, per dare una definizione più precisa di vCPU.
Prestazioni espandibili, VPS rallentate?
Questo non vale però per tutte le istanze: le t2, quelle più comunemente utilizzate visto il prezzo più accattivante, infatti adottano un sofisticato meccanismo di assegnazione della CPU chiamato a prestazioni espandibili. In pratica a queste VM non viene assegnata una intera vCPU, ma una sua percentuale, pare al 10% per le t2.micro, il 20% per le t2.small, il 40% per le t2.medium e il 60% per le t2.large. I numeri si riferiscono a un solo core, se parliamo ad esempio della t2.medium che ha 2 core significa di fatto il 20% per ogni core o il 40% su un solo core per applicazioni single threaded.
La percentuale citata però non è fissa, ma legata a un numero di crediti che viene assegnato ad ogni ora alla macchina. Se la CPU non viene utilizzata allora può accumulare crediti da usare successivamente per superare i limiti citati. In sostanza il meccanismo funziona solo per carichi molto limitati nel tempo, come quelli di un Web server inutilizzato. Se la CPU resta sotto carico la macchina è costantemente blindata alle percentuali citate, se è scarica da tempo può raggiungere il 100% dei core assegnati.
CPU senza il Turbo
Non è però sufficiente dichiarare la Cpu utilizzata per avere un dato preciso. Ad esempio secondo alcuni test che potete leggere in rete Microsoft sulle macchine Azure A9 (che costano circa 3.000 euro al mese nella versione Windows, 2.800 Linux) adotta uno Xeon E5-2670 Sandybridge-EP ma disabilita il Turbo Boost per ridurre il costo dell’energia, con una perdita di circa il 40% delle prestazioni nell’uso di applicazioni che usano un solo thread. Una bella differenza pur considerando che si tratta di un modello preciso di processore! Un interessante documento che fornisce i dettagli su processori e frequenze adottati dalle VM Azure lo potete trovare a questo indirizzo (http://blogs.technet.com/b/stephw/archive/2015/06/01/details-of-the-azure-processors-for-vm-sizes.aspx) sulla Technet.
Occhio alle specifiche
Abbiamo fatto qualche esempio citando alcuni dei casi più famosi ma naturalmente vi invitiamo a valutare caso per caso le offerte dei vostri cloud provider, cercando di farvi dare più dettagli possibili su come vengono effettivamente utilizzate le CPU fisiche delle macchine che ospiteranno le vostre applicazioni. Solo così potrete distinguere le mele dalle arance e fare un acquisto ragionato in base alle vostre necessità, magari anche risparmiando. Una valutazione da non dimenticarsi è anche quella del confronto on-premises o dell’opzione housing. Il costo di una VPS comprende la corrente, i sistemi Ups e tutti i costi di setup e gestione, che sono certamente molti. Ma quando arrivate a cifre come alcune di quelle citate (alcune migliaia di euro al mese) potreste scoprire che mettere le vostre macchine in datacenter o addirittura entro le mura è l’opzione più conveniente, anche se magari più impegnativa e con risultati meno garantiti. Nonostante la “moda” del cloud.
Articolo successivo: VPS (seconda parte): Il trucco delle SSD