【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

カーネルビルド計測

id:syuu1228さんがOpenBSD/sgiカーネルビルドを計測されています(セルフ/amd64上のクロス)。私の手元のマシンでも計測してみました。Interixはid:n7shi:20100113で移植したクロス環境を使用しています。

VMのオーバーヘッド

Athlon 64 X2 3800+ではVMware Player 3.0.1でAMD-Vが有効にできないため、バイナリ変換となっています。そのため実機でネイティブに実行するよりかなり遅くなっていますが、Interixよりは高速です。

make i386(VM)/i386 Interix/i386(VM) Interix/i386
-j1 1.53 1.35 2.08
-j2 1.82 1.21 2.21

極端に遅いケース

色々な組み合わせでテストしていて、以下の環境が特に遅いことが分かりました。

Virtual PCAMD-Vが有効にも関わらず使い物にならないくらい遅いです。VMware PlayerではAMD-Vが無効なため、バイナリ変換のオーバーヘッドだと思われます。なぜか-j1のままでもMPカーネルにするだけで高速化します。バイナリ変換がパラレル化されるためでしょうか。

MPカーネルは2プロセッサなのにジョブ数に比例して高速化するという不思議な挙動を示します。バイナリ変換のキャッシュの関係ではないかと推測します。


まとめ

Windows上の仮想環境でOpenBSDを使用するには、VMware Playerでi386のMPカーネルが良いようです。

今回計測した生データをExcelでまとめて置いておきます。