rosettaを使ったapple silicon上でのビルド計測
Desktop Parallels上のUbuntuでの設定
Desktop Parallels を使っているので下記に従って設定した。
既存イメージを流用する方を試した。
qemuが実行されてないか確認。
$ ls /proc/sys/fs/binfmt_misc/ llvm-15-runtime.binfmt python3.10 register RosettaLinux status $ cat /proc/sys/fs/binfmt_misc/RosettaLinux enabled interpreter /media/psf/RosettaLinux/rosetta flags: OCF offset 0 magic 7f454c4602010100000000000000000002003e00 mask fffffffffffefe00fffffffffffffffffeffffff
実測
mimic-crossのexampleにおいているbinutilsのビルドを実行してみた。
nativeビルド33.6sに対して217.6s。2回目は272.6sだった。
qemu-x86_64も試してみたがこちらは頻繁にエラーで止まってしまって諦めた。
割りとx86_64でqemu-aarch64使ったケースと同じぐらいのスケールだった。
mimic-crossを使う価値は十分にありそう。
$ docker buildx build -f binutils.dockerfile . ... => [2/7] RUN apt-get update && apt-get install -y --no-install-recommends wget ca-certificates binutils 26.6s => [3/7] RUN wget https://ftp.gnu.org/gnu/binutils/binutils-2.36.tar.gz 5.8s => [4/7] RUN tar xf ./binutils-2.36.tar.gz 2.1s => [5/7] WORKDIR /binutils-2.36 0.1s => [6/7] RUN ./configure 1.3s => [7/7] RUN make -j `nproc` 33.6s ...
$ docker buildx build --platform=linux/amd64 -f binutils.dockerfile . ... => [2/7] RUN apt-get update && apt-get install -y --no-install-recommends wget ca-certificates binutils gcc make libc6-dev && apt-get clean 61.8s => [3/7] RUN wget https://ftp.gnu.org/gnu/binutils/binutils-2.36.tar.gz 27.1s => [4/7] RUN tar xf ./binutils-2.36.tar.gz 2.3s => [5/7] WORKDIR /binutils-2.36 0.1s => [6/7] RUN ./configure 10.1s => [7/7] RUN make -j `nproc` 217.6s ...
mimic-cross実装
自動deployの探索対象をtargetからhostに修正
dpkg -l
をtargetに対してかけてしまっていた。
これだとhostにしかinstallされていないpackageをdeployできないので修正した。
ただしファイルすべてをdeployするわけではないので実行ファイルが他のファイルを必要とすると
target側にもapt-get installしないと現状は動作しないケースが多々ある。
commit: Let deploy-packages search /host
deploy-packageが複数引数取れるように
修正した。
commit: Support deploy-packages multi arguments
mimicx chroot
mimicx chroot apt-get update
などやりたかったので、
すでに内部実装で使っているhostへのchrootをcliにも出した。
commit: mimicx chroot