Ugrás a tartalomra

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.