pockestrap

Programmer's memo

makepkg する人は、今すぐxzがマルチコアを使うよう設定すると幸せになれるかもしれない

Arch Linux でパッケージをビルドする際、makepkgしたら-> Compressing package...で永遠に待たされた経験のある人は多いと思います。
android-ndk とか最悪ですね。何であんなに遅いんだろう…

これはxzコマンドがシングルスレッドで動いているのが原因なのですが、最近xzにマルチスレッドで動かすようなオプションが出来たみたいです。

makepkg - ArchWiki

/etc/makepkg.confCOMPRESSXZがある行を下記のように変更すると有効になります。

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%に張り付いていました。