Vai al contenuto
EuroVPSEuroVPS

Perché il vostro nuovo server risulta più lento del vecchio, senza esserlo.

Un bogomips più basso dopo una migrazione non è un server più lento, è un artefatto della virtualizzazione. Che cosa misura davvero, e come si mette alla prova il lavoro reale.

Di EuroVPS EngineeringLa sala macchine

4 min di lettura
In questo articolo 5 sezioni

Una domanda frequente dopo una migrazione è se un bogomips più basso significhi un server più lento. Non lo significa. Ecco come abbiamo risposto.

In breve
  • Un cliente appena migrato sulla nostra piattaforma ha notato che un valore chiamato bogomips risultava più basso che sulla sua vecchia macchina, e ha chiesto se il nuovo server fosse più lento.
  • Il bogomips non misura nulla che vorreste comprare. È un ciclo di calibrazione che il kernel esegue all'avvio per dimensionare i propri ritardi interni. Su un host virtuale riflette il clock presentato al guest, mentre il core fisico sottostante continua a girare a pieno turbo.
  • Non fidatevi del dato sostitutivo a scatola chiusa. Eseguite voi stessi i benchmark reali, carichi crittografici e di calcolo, su entrambe le macchine: una generazione di processori più recente è più veloce, con istruzioni più larghe. Il lavoro reale risponde alla domanda.
  • La lezione: una misura vale quanto ciò che misura. Non discutete il dato sostitutivo. Dite che cosa misura davvero, e lasciate che sia il lavoro reale a decidere.

Il numero dietro la domanda

Aveva confrontato il bogomips sulla vecchia macchina e sulla nuova, e la nuova lettura era risultata più bassa. Preso alla lettera, sembra un passo indietro. Non lo è, e per capire perché bisogna sapere che cos'è quel numero.

THE READING BEHIND THE QUESTION
$ grep -m1 bogomips /proc/cpuinfo

Che cosa misura davvero il bogomips

Il bogomips non è un benchmark. È un ciclo di calibrazione che il kernel esegue una volta all'avvio per dimensionare i propri ritardi interni di temporizzazione, così da sapere all'incirca quanti busy-loop stanno in un dato intervallo. Il nome è una battuta che gli sviluppatori del kernel hanno fatto a proprie spese: bogus millions of instructions per second. Su un host virtualizzato il numero è più bogus del solito, perché riflette il clock presentato al guest, il valore che l'hypervisor consegna alla VM, mentre il core fisico sottostante continua a girare a pieno turbo. Un bogomips più basso è una stranezza di come la virtualizzazione espone il clock, non la perdita di qualcosa di reale.

“Il bogomips non misura nulla che vorreste comprare.”

EUROVPS ENGINEERING
CHE COSA È CAMBIATO DAVVERO

La lettura è scesa. Il silicio no.

Il dato sostitutivo contro il lavoro reale

Ogni discussione del tipo «il mio server è diventato più lento» è in realtà una lite su che cosa avete scelto di misurare. Mettete il dato sostitutivo accanto al lavoro e la lite finisce.

IL DATO SOSTITUTIVO: BOGOMIPSIL LAVORO REALE: UN BENCHMARK
Che cos'è davveroUn ciclo di calibrazione che il kernel esegue una volta all'avvio per dimensionare i propri ritardi di temporizzazioneCarichi crittografici e di calcolo che rappresentano ciò che la vostra applicazione fa sotto carico
Che cosa legge su un host virtualeIl clock presentato al guest, un numero che l'hypervisor consegna alla VMIstruzioni eseguite sul core fisico, che continua a girare a pieno turbo
THE ONE THAT MATTERSCambia quando l'hardware diventa più recente?Non in modo affidabile. Segue un valore di clock virtualizzato, non il silicioSì. Una generazione più recente con istruzioni più larghe fa di più per ciclo
Quando viene misuratoUna volta, all'avvio, e poi mai piùA richiesta, tutte le volte che volete, da voi
Si può comprare?Nessuno vende bogomips, e nessun utente ne ha mai percepito unoSì. È il lavoro che pagate perché venga svolto più in fretta

Misurate il lavoro, non il dato sostitutivo

La mossa perdente è dire che il bogomips non significa nulla e lasciarla lì, perché chiede a un cliente di scambiare il suo numero con la nostra parola. Così abbiamo fatto il contrario. Abbiamo detto che cosa misura davvero il bogomips, poi gli abbiamo consegnato i benchmark da eseguire da sé: carichi crittografici e di calcolo reali, di quelli che rappresentano ciò che un'applicazione fa davvero. Abbiamo aggiunto una nota. La generazione di processori più recente sotto la sua VM è più veloce, con istruzioni più larghe, quindi il lavoro reale sarebbe risultato con ogni probabilità avanti, non indietro.

WHAT WE HANDED HIM
# stop measuring the proxy. measure the work.
$ openssl speed -evp aes-256-gcm          # cryptographic throughput
$ sysbench cpu --cpu-max-prime=20000 run  # raw CPU work
# run on the old box and the new one, then compare the work, not the clock.
01

Misurate il lavoro, non il clock

: Scegliete carichi che somiglino alla vostra applicazione. Il throughput crittografico e un test CPU sono un inizio equo e onesto. Bogomips, MHz e «punteggi» a numero unico sono dati sostitutivi. Saltateli.

02

Eseguite comandi identici su entrambe le macchine

: L'unica cosa che confrontate è quanto lavoro reale ciascuna completa nello stesso tempo di orologio.

03

Lasciate che sia il risultato a decidere

: Se la nuova macchina fa più lavoro, la migrazione è stata un passo avanti e la lettura del bogomips era rumore. Se davvero ne fa meno, ora avete un numero reale, e ora abbiamo qualcosa che vale la pena indagare insieme.

La lezione

Una misura vale quanto la cosa che misura davvero. Quando un cliente arriva con un dato sostitutivo, la mossa non è discutere il numero. È dire che cosa misura davvero quel numero, e poi lasciare che sia il lavoro reale a decidere. La macchina sottostante è stata calma e veloce per tutto il tempo. L'unica cosa diventata più lenta era il benchmark.

Risposte dirette

Un bogomips più basso sul mio nuovo server è un problema?+

Quasi mai. Il bogomips è un ciclo di calibrazione del kernel all'avvio, non un benchmark di prestazioni. Su una macchina virtuale riflette il clock presentato al guest, mentre il core fisico sottostante può continuare a girare a pieno turbo. Una lettura più bassa è di solito un artefatto della virtualizzazione, non prestazioni perdute.

Perché il bogomips è più basso su una macchina virtuale o dopo il passaggio a un VPS?+

Perché l'hypervisor presenta un valore di clock al guest, e il kernel si calibra su quel numero presentato all'avvio. Il core fisico continua a girare alla sua velocità turbo reale, spesso più alta. La lettura è cambiata. Il silicio no.

Il mio nuovo server sembra più lento dopo la migrazione. Che cosa controllo per primo?+

Prima, verificate di misurare il lavoro e non un dato sostitutivo come bogomips, MHz del clock o un punteggio sintetico a numero unico. Poi controllate i veri colpevoli del nostro playbook diagnostico: latenza delle query del database, profondità della coda del disco, saturazione dei worker PHP, o attese di rete. Dopo una migrazione, la prima cosa che controlliamo è se è cambiata la metrica, non la macchina.

Come capisco davvero se il mio nuovo server è più lento?+

Eseguite il lavoro, non il dato sostitutivo. Fate benchmark di carichi che somiglino alla vostra applicazione, un test di throughput crittografico (openssl speed) e un test CPU (sysbench), ed eseguite comandi identici su entrambe le macchine. Il lavoro reale decide in pochi minuti.

Una frequenza di clock più bassa sulla nuova CPU non è un passo indietro?+

Non di per sé. La frequenza è un solo fattore. Una generazione più recente con istruzioni più larghe fa più lavoro per ciclo, quindi può finire prima a un clock nominale più basso. È esattamente per questo che una lettura a numero unico vi inganna.

Ho appena migrato e qualcosa risulta più lento. Mi aiutate a controllare?+

Sì. Mandateci il numero. Vi diremo che cosa misura davvero, e vi consegneremo il benchmark da eseguire da soli. Se il lavoro reale è davvero più lento, è un ticket vero e lo approfondiremo con voi. Se non lo è, avrete la prova in un paio di minuti.

Avete appena migrato, e qualcosa risulta più lento?

Mandateci il numero e vi diremo che cosa misura. Non serve fidarsi.

Parla con un ingegnere

Siete arrivati alla fine.

Mettete la lettura al lavoro

Cosa fate girare?

Raccontateci il carico di lavoro, il traffico e i requisiti di ripristino. Partite dal configuratore di server, oppure discutete i dettagli con un ingegnere.

Scritto dagli ingegneri che costruiscono e gestiscono l'infrastruttura che descrive.
Parla con un ingegnere
XIn

4 min rimasti