Pourquoi votre nouveau serveur paraît plus lent que l'ancien, sans l'être.
Un bogomips plus bas après une migration n'est pas un serveur plus lent, c'est un artefact de la virtualisation. Ce qu'il mesure réellement, et comment tester le vrai travail.
Dans cet article 5 sections
Une question fréquente après une migration est de savoir si un bogomips plus bas signifie un serveur plus lent. Ce n'est pas le cas. Voici comment nous y avons répondu.
- Un client qui venait de migrer sur notre plateforme a remarqué qu'une valeur appelée bogomips était plus basse que sur son ancienne machine, et a demandé si le nouveau serveur était plus lent.
- Le bogomips ne mesure rien que vous voudriez acheter. C'est une boucle de calibration que le noyau exécute au démarrage pour dimensionner ses propres délais internes. Sur un hôte virtuel, il reflète l'horloge présentée à l'invité, alors que le cœur physique en dessous tourne toujours en plein turbo.
- Ne prenez pas l'indicateur de substitution pour acquis. Lancez vous-même les vrais benchmarks, des charges cryptographiques et CPU, sur les deux machines : une génération de processeur plus récente est plus rapide, avec des instructions plus larges. Le vrai travail répond à la question.
- La leçon : une mesure ne vaut que ce qu'elle mesure. Ne discutez pas l'indicateur. Nommez ce qu'il mesure réellement, puis laissez le vrai travail trancher.
Le chiffre derrière la question
Il avait comparé le bogomips sur son ancienne machine et sur la nouvelle, et la nouvelle lecture était plus basse. Pris au pied de la lettre, cela ressemble à une régression. Ce n'en est pas une, et pour comprendre pourquoi il faut savoir ce qu'est ce chiffre.
$ grep -m1 bogomips /proc/cpuinfoCe que le bogomips mesure réellement
Le bogomips n'est pas un benchmark. C'est une boucle de calibration que le noyau exécute une fois au démarrage pour dimensionner ses propres délais internes de temporisation, afin de savoir à peu près combien de busy-loops tiennent dans un intervalle donné. Le nom est une plaisanterie que les développeurs du noyau ont faite à leurs propres dépens : bogus millions of instructions per second. Sur un hôte virtualisé, le chiffre est plus bogus que d'habitude, parce qu'il reflète l'horloge présentée à l'invité, la valeur que l'hyperviseur transmet à la VM, alors que le cœur physique en dessous tourne toujours en plein turbo. Un bogomips plus bas est une bizarrerie de la façon dont la virtualisation expose l'horloge, pas la perte de quoi que ce soit de réel.
“Le bogomips ne mesure rien que vous voudriez acheter.”
La lecture a baissé. Le silicium, non.
L'indicateur de substitution face au vrai travail
Toute dispute du type « mon serveur est devenu plus lent » est en réalité une querelle sur ce que vous avez choisi de mesurer. Mettez l'indicateur à côté du travail et la querelle s'arrête.
| L'INDICATEUR : BOGOMIPS | LE VRAI TRAVAIL : UN BENCHMARK | |
|---|---|---|
| Ce que c'est réellement | Une boucle de calibration que le noyau exécute une fois au démarrage pour dimensionner ses délais de temporisation | Des charges cryptographiques et CPU qui tiennent lieu de ce que fait votre application sous charge |
| Ce qu'il lit sur un hôte virtuel | L'horloge présentée à l'invité, un chiffre que l'hyperviseur transmet à la VM | Des instructions exécutées sur le cœur physique, qui tourne toujours en plein turbo |
| THE ONE THAT MATTERSBouge-t-il quand le matériel devient plus récent ? | Pas de façon fiable. Il suit une valeur d'horloge virtualisée, pas le silicium | Oui. Une génération plus récente avec des instructions plus larges fait plus par cycle |
| Quand est-il mesuré | Une fois, au démarrage, puis plus jamais | À la demande, autant de fois que vous voulez, par vous |
| Peut-on l'acheter ? | Personne ne vend de bogomips, et aucun utilisateur n'en a jamais ressenti un | Oui. C'est le travail que vous payez pour qu'il soit fait plus vite |
Mesurez le travail, pas l'indicateur
Le coup perdant est de dire que le bogomips ne veut rien dire et de s'arrêter là, parce que cela demande à un client d'échanger son chiffre contre notre parole. Nous avons donc fait l'inverse. Nous avons nommé ce que le bogomips mesure réellement, puis nous lui avons remis les benchmarks à lancer lui-même : de vraies charges cryptographiques et CPU, de celles qui tiennent lieu de ce que fait réellement une application. Nous avons ajouté une note. La génération de processeur plus récente sous sa VM est plus rapide, avec des instructions plus larges, donc le vrai travail ressortirait très probablement devant, pas derrière.
# 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.Mesurez le travail, pas l'horloge
: Choisissez des charges qui ressemblent à votre application. Le débit cryptographique et un test CPU sont un départ juste et honnête. Le bogomips, les MHz et les « scores » à un seul chiffre sont des indicateurs de substitution. Passez-les.
Lancez des commandes identiques sur les deux machines
: La seule chose que vous comparez est la quantité de vrai travail que chacune termine dans le même temps d'horloge.
Laissez le résultat trancher
: Si la nouvelle machine fait plus de travail, la migration était une amélioration et la lecture du bogomips était du bruit. Si elle en fait réellement moins, vous avez maintenant un vrai chiffre, et nous avons maintenant quelque chose qui mérite d'être examiné ensemble.
La leçon
Une mesure ne vaut que ce qu'elle mesure réellement. Quand un client arrive avec un indicateur de substitution, la bonne réaction n'est pas de discuter le chiffre. C'est de nommer ce que le chiffre mesure réellement, puis de laisser le vrai travail trancher. La machine en dessous a été calme et rapide tout le temps. La seule chose devenue plus lente était le benchmark.
Réponses directes
Un bogomips plus bas sur mon nouveau serveur est-il un problème ?+
Presque jamais. Le bogomips est une boucle de calibration du noyau au démarrage, pas un benchmark de performances. Sur une machine virtuelle, il reflète l'horloge présentée à l'invité, alors que le cœur physique en dessous peut toujours tourner en plein turbo. Une lecture plus basse est en général un artefact de la virtualisation, pas des performances perdues.
Pourquoi le bogomips est-il plus bas sur une machine virtuelle ou après le passage à un VPS ?+
Parce que l'hyperviseur présente une valeur d'horloge à l'invité, et que le noyau se calibre sur ce chiffre présenté au démarrage. Le cœur physique continue de tourner à sa vraie vitesse turbo, souvent plus élevée. La lecture a changé. Le silicium, non.
Mon nouveau serveur paraît plus lent après la migration. Que vérifier en premier ?+
D'abord, confirmez que vous mesurez le travail et non un indicateur de substitution comme le bogomips, les MHz d'horloge ou un score synthétique à un seul chiffre. Ensuite, vérifiez les vrais coupables de notre playbook de diagnostic : la latence des requêtes de base de données, la profondeur de la file du disque, la saturation des workers PHP, ou l'attente réseau. Après une migration, la première chose que nous vérifions est si la métrique a changé, pas la machine.
Comment savoir réellement si mon nouveau serveur est plus lent ?+
Lancez le travail, pas l'indicateur. Faites des benchmarks de charges qui ressemblent à votre application, un test de débit cryptographique (openssl speed) et un test CPU (sysbench), et lancez des commandes identiques sur les deux machines. Le vrai travail tranche en quelques minutes.
Une fréquence d'horloge plus basse sur le nouveau CPU n'est-elle pas une régression ?+
Pas en soi. La fréquence est un facteur parmi d'autres. Une génération plus récente avec des instructions plus larges fait plus de travail par cycle, donc elle peut terminer plus vite à une horloge nominale plus basse. C'est exactement pour cela qu'une lecture à un seul chiffre vous induit en erreur.
Je viens de migrer et quelque chose paraît plus lent. M'aiderez-vous à vérifier ?+
Oui. Envoyez-nous le chiffre. Nous vous dirons ce qu'il mesure réellement, et nous vous remettrons le benchmark à lancer vous-même. Si le vrai travail est réellement plus lent, c'est un vrai ticket et nous creuserons avec vous. Sinon, vous aurez la preuve en deux minutes.
Vous venez de migrer, et quelque chose paraît plus lent ?
Envoyez-nous le chiffre et nous vous dirons ce qu'il mesure. Aucune confiance aveugle requise.
Parler à un ingénieurVous êtes arrivé à la fin.
Mettez la lecture en pratique
Que faites-vous tourner ?
Parlez-nous de la charge de travail, du trafic et des exigences de reprise. Commencez par le configurateur de serveur, ou passez en revue les détails avec un ingénieur.
Écrit par les ingénieurs qui construisent et exploitent l'infrastructure qu'il décrit.Parler à un ingénieur
