benchmarkok
Miért lassabb a QEMU arm64 buildje 40-szer?
Az emulált és a natív kar64 Docker mért bontása öt valós munkaterhelésre épül, és miért változik annyira a büntetés.
Tomás Rivera · Teljesítménytechnika · 2026-06-11 · 8 perc olvasás
A linux/arm64 hozzáadása egy Docker buildhez egy sor. A következmény néha 3-szoros lassulás, néha 40-szeres, és a különbség megzavarja az embereket. Ez nem véletlen.
A mechanizmus
A felhasználói módú emulációban a QEMU az arm64 utasításokat x64 utasításokra fordítja le futás közben. A fordítás utasításonként fix rezsivel rendelkezik. Tehát a büntetés attól függ, hogy hány utasítást hajt végre a build – nem attól, hogy mennyi ideig tart, és nem a képmérettől.
A fájlokat másoló és az apt-getet futtató build viszonylag kevés utasítást hajt végre. Egy fordítóprogramot futtató build hatalmas számot hajt végre.
Mérve
A minta tiszta: minél többet fordít a build, annál rosszabb lesz az emuláció. Ha a Dockerfile fordítóprogramot hív meg, a QEMU nem életképes stratégia.
A javítás
Építsen fel minden architektúrát a saját hardverére, és egyesítse a kivonatokat egy jegyzéklistába. Ez inkább YAML, mint egyetlen platformsor, és ez a különbség három perc és két óra között.
A következő buildje kétszer gyorsabb lehet, fele áron
Kezdje ingyen. A távozás ugyanaz az egy sor, és azt a diffet is közzétesszük.