数週間前まで、各ターゲットデバイスのフルビルドに約1.5時間かかっていたビルドシステムがあります。
ある時点で、これは約3.5時間に増加しました。これは、約9つの異なるターゲットに対してビルドするため、ビルド時間が14時間から約32時間に増加しました。
問題がどこにあるのか、ようやく確立できたと思います。Win10ボックス(ゲストはUbuntu 16.04)で実行されているVMがWin7ボックスにコピーされました。VMは、セットアップ、実行されたディスクの種類などの点でまったく変更されていません。マシンも非常によく似た仕様でした(同じCPU、ディスクなど)。
余談ですが、私はもともとVirtualBox 5.xを実行していましたが、Win7ボックスには6.0.12がありましたが、ボックスの6.0.14にアップグレードしても変更がなかったため、これは問題ではないと思います。VMディスクをボックスのSSDに移動しても、ほとんど安心できませんでした。つまり、ほぼ確実にCPUバウンドです。
VMを実行しているWin7ボックスは、各ビルドを約1.5時間で実行しました。
次に、そのボックスに加えた唯一の変更は、Win10へのインプレースアップグレードでした。そして、見よ、ビルドもそれぞれ3.5時間かかっています。
少しの調査によると、ホストとゲストの両方としてVirtualBox / Win10に問題がある人が数人いますが、アドバイスがあります(ビデオメモリの増加、ホストとゲスト間のCPU /メモリの再バランス、ビデオアクセラレーションの有効化/無効化など)何も修正されていないようです。
次のようないくつかのアイデアを検討しています。
誰かが前進する方法について他のアイデアを持っていますか?
私たちはいくつかの調査を行ってきましたが、原因はWindows10で導入されたSpectre2 / Meltdownの緩和策であることが判明しました。
いくつかのWebサイトから、影響はさまざまですが、サーバーファームと開発者ボックスを構築するのに最も害があることがわかりました(たとえば、ここを参照)。
Gibson Research InSpectreツールを使用して緩和策をオフにすると(もちろん、安全のためにマシンをエアギャップした後)、ビルドは再びターゲットあたり1時間半になりました。
今、私たちはこれをどのように進めるかを理解する必要があります。すでにソースの準備ができているエアギャップマシン上に構築する必要があるかもしれません。
いくつかの詳細。私たちのすべての開発者マシンはCPUID 306c3 Haswell
、緩和策によって特に大きな打撃を受けたものです。最新のプロセッサCPUID 810f10
(AMD Ryzen 5)でテストして、影響が少ないかどうかを確認します。
もしそうなら、私たちはそれらのいくつかを購入することを選ぶかもしれません。いずれの場合も、この回答は結果で更新されます。
うまくいけば、これが最終的な更新になります。当初、WindowsホストでSpectre / Meltdownの緩和策を無効にすることで速度を取り戻すことに成功しましたが、ハッキングされる可能性があるため、これは実際には実行可能なソリューションではありませんでした。
さらなる調査により、VirtualBoxはこの環境で苦しんでいたが、VMwareは苦しんでいないことが示されたようです。そこで、違いを説明するものを探しに行きました。
最終的に、同様の問題を説明するこのスレッドに遭遇し、そこで提案された解決策の1つを試してみると、ホストOSを危険にさらすことなく速度を取り戻すことができることがわかりました。
解決策は、VMがシャットダウンされている(中断されていない)ときに、次のコマンドを実行することです。
vboxmanage modifyvm VM_NAME --spec-ctrl on
ここでVM_NAME
、実際のVM名(で取得vboxmanage list vms
)に置き換える必要があります。次に、VMを再起動した後、VMは再び通常の速度で実行されます。
残念ながら、これは、開発チーム全体で新しいThreadripperPCを入手するという私のビジネスケースが崩壊したことを意味します。くそー、インターネット:-)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加