Arch Linux でパッケージをビルドする際、makepkg
したら-> Compressing package...
で永遠に待たされた経験のある人は多いと思います。
android-ndk とか最悪ですね。何であんなに遅いんだろう…
これはxz
コマンドがシングルスレッドで動いているのが原因なのですが、最近xz
にマルチスレッドで動かすようなオプションが出来たみたいです。
/etc/makepkg.conf
の COMPRESSXZ
がある行を下記のように変更すると有効になります。
COMPRESSXZ=(xz -T 0 -c -z -)
-T 0
オプションを追加すると良いみたいです。
実際にオプションを追加して実行してみた結果が以下です。android-ndk
で試してみました。
ダウンロードやconfrimもあるので正確な数値ではないですが、かなり速くなっている && CPU使用率が高くなっているのがわかると思います。
### before total 1245.54s user 1106.71s system 41.85s CPU 92% cmd yaourt android ndk ### after total 484.37s user 1729.25s system 32.68s CPU 363% cmd yaourt android ndk
ちなみにCPUはcore i7 6700kで、4コア8スレッドです。
compressの部分だけを比べているわけではないので、純粋に8倍にはなりませんね。
ただし、makepkg
実行中のCPU使用率をグラフで見ていると、beforeは1コアしか使用していないのに対し、afterは8コア全てが100%に張り付いていました。