Sari la conținut

repere

De ce construcția dvs. QEMU arm64 este de 40 ori mai lentă

O defalcare măsurată a brațului emulat versus brațul nativ64 Docker se bazează pe cinci sarcini reale de lucru și de ce penalizarea variază atât de mult.

{autor} · {rol} · {data} · {minute} {minuteLabel}

Adăugarea linux/arm64 la o construcție Docker este o singură linie. Consecința este uneori o încetinire de 3× și uneori una de 40×, iar diferența derutează oamenii. Nu este întâmplător.

Mecanismul

QEMU în emularea în modul utilizator traduce instrucțiunile arm64 în instrucțiuni x64 în timpul execuției. Traducerea are taxe generale fixe pe instrucțiune. Deci, penalizarea crește în funcție de câte instrucțiuni execută construcția dvs. - nu cu cât timp durează și nu cu dimensiunea imaginii.

O versiune care copiază fișiere și rulează apt-get execută relativ puține instrucțiuni. O versiune care rulează un compilator execută un număr enorm.

Măsurat

Modelul este curat: cu cât compilarea dvs. se compilează mai mult, cu atât emularea devine mai proastă. Dacă Dockerfile invocă un compilator, QEMU nu este o strategie viabilă.

Remedierea

Construiți fiecare arhitectură pe propriul hardware și îmbinați rezumatele într-o listă de manifeste. Este mai mult YAML decât o singură linie de platforme și este diferența dintre trei minute și două ore.

Următorul tău build poate fi de două ori mai rapid, la jumătate de preț

Începe gratuit. Plecarea înseamnă aceeași linie, iar acel diff îl publicăm și noi.