Aller au contenu

repères

Pourquoi votre version QEMU arm64 est 40 fois plus lente

Une répartition mesurée entre l'émulation et l'arm64 Docker natif s'appuie sur cinq charges de travail réelles, et pourquoi la pénalité varie autant.

{auteur} · {rôle} · 2026-06-11 · 8 min de lecture

L'ajout de Linux/arm64 à une version Docker est une ligne. La conséquence est parfois un ralentissement de 3× et parfois de 40×, et la différence déroute les gens. Ce n’est pas aléatoire.

Le mécanisme

QEMU dans l'émulation en mode utilisateur traduit les instructions arm64 en instructions x64 au moment de l'exécution. La traduction a une surcharge fixe par instruction. Ainsi, la pénalité dépend du nombre d'instructions exécutées par votre build, et non du temps que cela prend, ni de la taille de l'image.

Une version qui copie des fichiers et exécute apt-get exécute relativement peu d'instructions. Une version qui exécute un compilateur en exécute un nombre énorme.

Mesuré

Le modèle est propre : plus votre build est compilé, plus l'émulation est mauvaise. Si votre Dockerfile appelle un compilateur, QEMU n'est pas une stratégie viable.

Le correctif

Construisez chaque architecture sur son propre matériel et fusionnez les résumés dans une liste de manifestes. Il s'agit plus de YAML que d'une seule ligne de plateforme, et c'est la différence entre trois minutes et deux heures.

Votre prochain build pourrait être deux fois plus rapide, pour moitié prix

Commencez gratuitement. Repartir tient à la même ligne, et nous publions ce diff aussi.