Γιατί ο νέος server σας μετράει πιο αργός από τον παλιό, ενώ δεν είναι.
Μια χαμηλότερη ένδειξη bogomips μετά από μεταφορά δεν είναι πιο αργός server, είναι τεχνούργημα της εικονικοποίησης. Τι μετράει πραγματικά, και πώς δοκιμάζεται η πραγματική δουλειά.
Σε αυτό το άρθρο 5 ενότητες
Μια συνηθισμένη ερώτηση μετά από μεταφορά είναι αν μια χαμηλότερη ένδειξη bogomips σημαίνει πιο αργό server. Δεν σημαίνει. Να πώς την απαντήσαμε.
- Ένας πελάτης που είχε μόλις μεταφερθεί στην πλατφόρμα μας παρατήρησε ότι μια τιμή που λέγεται bogomips έβγαινε χαμηλότερη από ό,τι στο παλιό του μηχάνημα, και ρώτησε αν ο νέος server ήταν πιο αργός.
- Το bogomips δεν μετράει τίποτα που θα θέλατε να αγοράσετε. Είναι ένας βρόχος βαθμονόμησης που τρέχει ο kernel κατά την εκκίνηση για να διαστασιολογήσει τις εσωτερικές του καθυστερήσεις. Σε έναν εικονικό host αντανακλά το παρουσιαζόμενο ρολόι του guest, ενώ ο φυσικός πυρήνας από κάτω εξακολουθεί να τρέχει σε πλήρες turbo.
- Μην εμπιστεύεστε τον δείκτη-υποκατάστατο στα τυφλά. Τρέξτε μόνοι σας τα πραγματικά benchmarks, κρυπτογραφικούς και υπολογιστικούς φόρτους, και στα δύο μηχανήματα: μια νεότερη γενιά επεξεργαστή είναι πιο γρήγορη, με πλατύτερες εντολές. Η πραγματική δουλειά απαντά στην ερώτηση.
- Το μάθημα: μια μέτρηση αξίζει όσο αυτό που μετράει. Μη διαφωνείτε για τον δείκτη. Ονομάστε τι μετράει πραγματικά, και αφήστε την πραγματική δουλειά να το κρίνει.
Ο αριθμός πίσω από την ερώτηση
Είχε συγκρίνει το bogomips στο παλιό του μηχάνημα και στο νέο, και η νέα ένδειξη βγήκε χαμηλότερη. Διαβασμένο κατά γράμμα, αυτό μοιάζει με υποβάθμιση. Δεν είναι, και για να δείτε γιατί πρέπει να ξέρετε τι είναι αυτός ο αριθμός.
$ grep -m1 bogomips /proc/cpuinfoΤι μετράει πραγματικά το bogomips
Το bogomips δεν είναι benchmark. Είναι ένας βρόχος βαθμονόμησης που ο kernel τρέχει μία φορά κατά την εκκίνηση για να διαστασιολογήσει τις εσωτερικές του καθυστερήσεις χρονισμού, ώστε να ξέρει περίπου πόσοι busy-loops χωράνε σε ένα δεδομένο διάστημα. Το όνομα είναι ένα αστείο που έκαναν οι προγραμματιστές του kernel εις βάρος τους: bogus millions of instructions per second. Σε εικονικοποιημένο host ο αριθμός είναι πιο bogus από το συνηθισμένο, γιατί αντανακλά το παρουσιαζόμενο ρολόι του guest, την τιμή που δίνει ο hypervisor στη VM, ενώ ο φυσικός πυρήνας από κάτω εξακολουθεί να τρέχει σε πλήρες turbo. Μια χαμηλότερη ένδειξη bogomips είναι ιδιοτροπία του πώς η εικονικοποίηση εκθέτει το ρολόι, όχι απώλεια οποιουδήποτε πραγματικού πράγματος.
“Το bogomips δεν μετράει τίποτα που θα θέλατε να αγοράσετε.”
Η ένδειξη έπεσε. Το πυρίτιο όχι.
Ο δείκτης-υποκατάστατο απέναντι στην πραγματική δουλειά
Κάθε διαφωνία του τύπου «ο server μου έγινε πιο αργός» είναι στην πραγματικότητα καβγάς για το τι διαλέξατε να μετρήσετε. Βάλτε τον δείκτη δίπλα στη δουλειά και ο καβγάς τελειώνει.
| Ο ΔΕΙΚΤΗΣ: BOGOMIPS | Η ΠΡΑΓΜΑΤΙΚΗ ΔΟΥΛΕΙΑ: ΕΝΑ BENCHMARK | |
|---|---|---|
| Τι είναι πραγματικά | Ένας βρόχος βαθμονόμησης που ο kernel τρέχει μία φορά κατά την εκκίνηση για να διαστασιολογήσει τις καθυστερήσεις χρονισμού του | Κρυπτογραφικοί και υπολογιστικοί φόρτοι που αντιπροσωπεύουν αυτό που κάνει η εφαρμογή σας υπό φορτίο |
| Τι δείχνει σε εικονικό host | Το παρουσιαζόμενο ρολόι του guest, έναν αριθμό που δίνει ο hypervisor στη VM | Εντολές που εκτελέστηκαν στον φυσικό πυρήνα, που εξακολουθεί να τρέχει σε πλήρες turbo |
| THE ONE THAT MATTERSΑλλάζει όταν το hardware γίνεται νεότερο; | Όχι αξιόπιστα. Παρακολουθεί μια εικονικοποιημένη τιμή ρολογιού, όχι το πυρίτιο | Ναι. Μια νεότερη γενιά με πλατύτερες εντολές κάνει περισσότερα ανά κύκλο |
| Πότε μετριέται | Μία φορά, στην εκκίνηση, και μετά ποτέ ξανά | Κατά παραγγελία, όσες φορές θέλετε, από εσάς |
| Μπορείτε να το αγοράσετε; | Κανείς δεν πουλάει bogomips, και κανένας χρήστης δεν ένιωσε ποτέ ένα | Ναι. Αυτή είναι η δουλειά που πληρώνετε για να γίνεται πιο γρήγορα |
Μετρήστε τη δουλειά, όχι τον δείκτη
Η χαμένη κίνηση είναι να πούμε ότι το bogomips δεν σημαίνει τίποτα και να το αφήσουμε εκεί, γιατί ζητάει από έναν πελάτη να ανταλλάξει τον αριθμό του με τον λόγο μας. Οπότε κάναμε το αντίθετο. Ονομάσαμε τι μετράει πραγματικά το bogomips, μετά του δώσαμε τα benchmarks να τα τρέξει ο ίδιος: πραγματικούς κρυπτογραφικούς και υπολογιστικούς φόρτους, από αυτούς που αντιπροσωπεύουν αυτό που κάνει πραγματικά μια εφαρμογή. Προσθέσαμε μία σημείωση. Η νεότερη γενιά επεξεργαστή κάτω από τη VM του είναι πιο γρήγορη, με πλατύτερες εντολές, οπότε η πραγματική δουλειά πολύ πιθανόν να έβγαινε μπροστά, όχι πίσω.
# 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.Μετρήστε τη δουλειά, όχι το ρολόι
: Διαλέξτε φόρτους που μοιάζουν με την εφαρμογή σας. Η κρυπτογραφική απόδοση και ένα τεστ CPU είναι μια δίκαιη, ειλικρινής αρχή. Το bogomips, τα MHz και τα «σκορ» ενός αριθμού είναι δείκτες-υποκατάστατα. Παραλείψτε τα.
Τρέξτε πανομοιότυπες εντολές και στα δύο μηχανήματα
: Το μόνο που συγκρίνετε είναι πόση πραγματική δουλειά τελειώνει το καθένα στον ίδιο χρόνο ρολογιού.
Αφήστε το αποτέλεσμα να το κρίνει
: Αν το νέο μηχάνημα κάνει περισσότερη δουλειά, η μεταφορά ήταν αναβάθμιση και η ένδειξη bogomips ήταν θόρυβος. Αν πραγματικά κάνει λιγότερη, τώρα έχετε έναν πραγματικό αριθμό, και τώρα έχουμε κάτι που αξίζει να διερευνήσουμε μαζί.
Το μάθημα
Μια μέτρηση αξίζει όσο αυτό που πραγματικά μετράει. Όταν ένας πελάτης έρχεται με έναν δείκτη-υποκατάστατο, η κίνηση δεν είναι να διαφωνήσουμε για τον αριθμό. Είναι να ονομάσουμε τι μετράει πραγματικά ο αριθμός, και μετά να αφήσουμε την πραγματική δουλειά να το κρίνει. Το μηχάνημα από κάτω ήταν ήρεμο και γρήγορο όλη την ώρα. Το μόνο που έγινε πιο αργό ήταν το benchmark.
Ευθείες απαντήσεις
Είναι πρόβλημα ένας χαμηλότερος αριθμός bogomips στον νέο μου server;+
Σχεδόν ποτέ. Το bogomips είναι βρόχος βαθμονόμησης του kernel κατά την εκκίνηση, όχι benchmark επιδόσεων. Σε εικονική μηχανή αντανακλά το παρουσιαζόμενο ρολόι του guest, ενώ ο φυσικός πυρήνας από κάτω μπορεί να τρέχει ακόμα σε πλήρες turbo. Μια χαμηλότερη ένδειξη είναι συνήθως τεχνούργημα της εικονικοποίησης, όχι χαμένες επιδόσεις.
Γιατί είναι χαμηλότερο το bogomips σε εικονική μηχανή ή μετά τη μετάβαση σε VPS;+
Επειδή ο hypervisor παρουσιάζει μια τιμή ρολογιού στον guest, και ο kernel βαθμονομεί με βάση αυτόν τον παρουσιαζόμενο αριθμό κατά την εκκίνηση. Ο φυσικός πυρήνας συνεχίζει να τρέχει στην πραγματική του, συχνά υψηλότερη, ταχύτητα turbo. Η ένδειξη άλλαξε. Το πυρίτιο όχι.
Ο νέος μου server μοιάζει πιο αργός μετά τη μεταφορά. Τι να ελέγξω πρώτα;+
Πρώτα, επιβεβαιώστε ότι μετράτε τη δουλειά και όχι έναν δείκτη όπως bogomips, MHz ρολογιού ή ένα συνθετικό σκορ ενός αριθμού. Μετά ελέγξτε τους πραγματικούς ενόχους από το διαγνωστικό μας playbook: latency των queries της βάσης, βάθος ουράς δίσκου, κορεσμό των PHP workers, ή αναμονή δικτύου. Μετά από μεταφορά, το πρώτο που ελέγχουμε είναι αν άλλαξε η μετρική, όχι το μηχάνημα.
Πώς καταλαβαίνω πραγματικά αν ο νέος μου server είναι πιο αργός;+
Τρέξτε τη δουλειά, όχι τον δείκτη. Κάντε benchmark φόρτους που μοιάζουν με την εφαρμογή σας, ένα τεστ κρυπτογραφικής απόδοσης (openssl speed) και ένα τεστ CPU (sysbench), και τρέξτε πανομοιότυπες εντολές και στα δύο μηχανήματα. Η πραγματική δουλειά το κρίνει σε λίγα λεπτά.
Δεν είναι υποβάθμιση μια χαμηλότερη συχνότητα ρολογιού στη νέα CPU;+
Όχι από μόνη της. Η συχνότητα είναι μία είσοδος. Μια νεότερη γενιά με πλατύτερες εντολές κάνει περισσότερη δουλειά ανά κύκλο, οπότε μπορεί να τελειώνει πιο γρήγορα σε χαμηλότερο ονομαστικό ρολόι. Ακριβώς γι' αυτό μια ένδειξη ενός αριθμού σας παραπλανά.
Μόλις μεταφέρθηκα και κάτι δείχνει πιο αργό. Θα με βοηθήσετε να το ελέγξω;+
Ναι. Στείλτε μας τον αριθμό. Θα σας πούμε τι μετράει πραγματικά, και θα σας δώσουμε το benchmark να το τρέξετε μόνοι σας. Αν η πραγματική δουλειά είναι όντως πιο αργή, αυτό είναι πραγματικό ticket και θα το ψάξουμε μαζί σας. Αν δεν είναι, θα έχετε απόδειξη σε δυο λεπτά.
Μόλις μεταφερθήκατε, και κάτι δείχνει πιο αργό;
Στείλτε μας τον αριθμό και θα σας πούμε τι μετράει. Δεν χρειάζεται να μας εμπιστευτείτε.
Μιλήστε με έναν μηχανικόΦτάσατε στο τέλος.
Βάλτε την ανάγνωση σε εφαρμογή
Τι τρέχετε;
Πείτε μας για τον φόρτο εργασίας, την κίνηση και τις απαιτήσεις ανάκαμψης. Ξεκινήστε από το εργαλείο διαμόρφωσης server ή συζητήστε τις λεπτομέρειες με έναν μηχανικό.
Γραμμένο από τους μηχανικούς που χτίζουν και λειτουργούν την υποδομή που περιγράφει.Μιλήστε με έναν μηχανικό
