ソースから Android を構築する場合の最大のボトルネック

AOSP プロジェクトが構築するボトルネックについて知りたいですか? Dan は彼の調査結果を共有します。これは、何がボトルネックの原因となり、何がボトルネックを引き起こさないのかについて読者を驚かせるかもしれません。

4/19 午後 12 時 (中部時間) 更新: ビルド時間は ccache ビルド時間であることが明確になりました。4 月 20 日午前 9 時 17 分 (中部時間) 更新: ビルド 3 は間違いなく RAID 1 ではありませんでした。 そのエラーを修正しました。

2012 年に私はカーネルの構築を開始し、信頼できる Core 2 Quad Q9550 を使ってカーネルを構築しました。 それがうんざりするほどのことではないとしても、Windows 内の VM でそれを実行したという事実は、ソースから Android を構築するほとんどの人にとっておそらくそうでしょう。

仮想化された Ubuntu 環境はネイティブ環境ほどパフォーマンスが良くありません。カーネルの構築に 2 時間以上かかったときに、それがどれほど苦痛であるかが明らかになりました。 翌年、ソースから Android の構築を開始したいと考えていたため、現在のハードウェアでは機能しないことがわかっていました。 それをカットし、成長し続けるビルドを削減する方法を見つける長く続く旅が始まりました。 時間。

それ以来数年間、私は幸運にも複数のフォーム ファクターとプラットフォームでテストすることができました。 Android ではビルド構成が万能ではないため、これは重要です。 アプリケーション開発者は、ゲーム開発者と同じ構成を必要としない場合があります。 また、カーネルのみを構築する人は、非常に短時間でソースから完全な Android ROM を構築する必要がある人ほど費用を費やす必要がないかもしれません。 そして、OS の選択についてはどうでしょうか。現時点で何が使用できる (そしてできない) のでしょうか? これについても、特に Windows と Canonical は、Windows 10 に本格的な Bash を導入するために取り組んでいます.

このシリーズを正しく開始するには、ソースから AOSP プロジェクトを構築する際に、最大の潜在的なボトルネックがどこにあるのかを見つける必要があります。 お金をどこに投入すればよいかわからないまま、PC やアップグレードを購入することはあまりありません。 そこで、3 年間の研究と定量化可能な結果に基づいて、私が発見したことを共有する準備ができました。 ここで予想される免責事項: これらの調査結果は個人的な経験に基づいており、すべての組み合わせを考慮することはできません。 独自のビルド構成をお持ちの方は、ぜひビルドの成果をお知らせください。 時間は、ccache が有効で設定されたビルドにも言及しています。ccache がまだ設定されていないときは、通常は 2 倍でした。

ディスクI/O: Cyanogen の Tom Marshall に敬意を表したいと思います。 チームカンのメンバー - 昨年私にこの方向性を教えてくれて。 彼がこうなると言ったとき、私は正直信じられませんでした CPU に関するボトルネック。 しかし、過去 6 か月にわたって、私はこれを定量化可能なデータで裏付けることができました。 ハイエンド CPU (ほとんどのデスクトップ Intel Core i7 モデルなど) では、これがシステムで発生する最大のボトルネックになります。

これをテストした 4 つのビルド構成を取り上げてみましょう。 ここで CPU を強調します。

  • 私の「アップグレードされていない」PC であるビルド 1 は、32 GB の DDR3-2400 RAM を搭載した Intel i7-4790K、プライマリ ドライブとして Samsung 840 Evo 250GB、古い Micron P400E 100GB でした。
  • ビルド 2。ビルド 1 のアップグレード バージョンです。 以前の 2 つの SSD に加えて、4.0 GHz にオーバークロックされた Intel i7-5960X、32GB DDR4-3200 RAM、Samsung SM951 512GB AHCI m.2 SSD が搭載されています。 この完全なビルド仕様は PCPartPicker にあります.
  • 最近のユーザー ビルドであるビルド 3 には、4.2 GHz にオーバークロックされた Intel i7-5820K、16 GB の DDR4-2400、および RAID0 (ストライプ) 構成の 2 つの Samsung 840 EVO 120GB が搭載されていました。
  • ビルド 4 は、通常速度の Intel Xeon E3-1270 v5、32 GB DDR4-2133、Samsung 950 Pro 512GB NVMe m.2、および RAID5 アレイ内の 4 台の SATA Samsung エンタープライズ SSD を備えた最新のサーバー ビルドです。

これらだけを見た場合、最も短いビルド時間を達成したのはどれだと思いますか? 2番目はどうですか? 驚いたことに、ビルド時間が最も短かったのは 2 番目の構成ではなく、3 番目の構成でした。 CyanogenMod 13.0 のビルドには 14 分弱かかります。 したがって、確かに支配的な CPU が 2 位になるでしょう。 右? また違う。 テストを終えたばかりのビルド 4 の所要時間は 25 分強でした。 ここだけが私の現在のビルドの状況であり、コアとスレッドが半分で 3 つの SSD からなる SSD アレイを備えたシステムよりも 2 分遅くなります。一方、私の SSD はスタンドアロンでした。 SM951 は、熱くなりすぎるとスロットリングの問題が発生することも知られており、この場合、これが非常に大きな要因となる可能性があります。 最初の最も遅いビルドには約 30 分かかりましたが、これは私が CM 13.0 をビルドした中で数少ない時間の 1 つでした。 同様のビルド構成が 27 で実行されていると聞いたことがあります。

SSD もかつては入手が困難なアイテムだったので、このテーマについての議論はほとんどありませんでした。 しかし、昨年、小売市場と中古市場の両方で価格が大幅に下落しました。 120GB SSD が現在 50 ドル以下になっているため、システムに SSD を追加することはかつては障壁ではありませんでした。 従来のハード ドライブでも同様に機能しますが、SSD を使用していないユーザーは他のユーザーよりも早くこのボトルネックに到達する可能性が高くなります。

CPUスリープCPU: 最大のボトルネックはディスク I/O であると上で述べたとき、常にそうであるとは限らないという仮定が組み込まれています。私が使用した各ビルドは Intel Core i7 を搭載していました。 しかし、Xeon サーバーでわかったように、ディスクは維持されますが、最も負荷の高いビルド プロセスを通じて 8 つの CPU スレッドすべてが高い使用率に保たれます。 試してみても、上で見つけた RAID アレイがなければ、私の Haswell-E はほとんどのビルド プロセスで完全に活用されていないことがわかりました。 したがって、構築費用に見合った最高のパフォーマンスを探している場合は、Intel i7-5820K を検討してください。

確かに、X99 なので、マザーボードは Z97 マザーボードよりも高価になる可能性があります。 しかし、私たちはまだ X99 サイクルの 1 年目にいます。 Broadwell-E の価格も、リリース時には Haswell-E と同様に維持されると予想されます。つまり、 i7-4790K とほぼ同じ価格で愛好家セグメントを購入できるはずです。 i7-6700K。

Intel では、素晴らしいビルド時間を実現できるため、現時点では 5820K を超える理由はあまりありません。 ほとんどの場合、以下のコア/スレッド数が高く、プロセッサー速度が高いほど、ビルド時間が短縮されます。 昨年の GIGABYTE Brix の i7-4770R のビルド時間は平均 42 分でした。 最速ではありませんが、私のニーズには適しており、専用の低電力構成が可能でした。 AMD APU でも同じことがわかります。現時点では Intel の APU ほどのパフォーマンスは得られないかもしれませんが、通常は Intel を購入するよりも低価格で、簡単に仕事をこなすことができます。 噂が真実であれば、Zen ベースの APU がそのギャップを大幅に埋める可能性があるため、これは私が注視している状況です。

これらのボトルネックを取り除くことを選択した人には、オフィスよりも家庭ユーザーに当てはまる結果があります。 これらのボトルネックを解消すると、システムの全体的なパフォーマンスが向上します。 特にゲーマーは、これらのボトルネックに対処するためにアップグレードすると、ほとんどの場合、ゲームのパフォーマンスも向上することがわかります。 最速のビルド時間は得られなかったかもしれませんが、2 番目のビルドでは予想外の驚きがもたらされました。ロード時間は 30 秒でした。 ジャストコーズ3 他の多くの人が分単位のロード時間について不満を抱いていたとき。 結局のところ、これらのビルド時間は非常にハイエンドであり、多くの人にとってはやりすぎかもしれません... しかし、少なくとも現在では、コアが増えればビルドが高速化されるという議論はようやく解消されました。

これはほんの始まりにすぎないため、読者の皆様もぜひ参加して、さまざまな構成での構築体験を共有していただければ幸いです。 読者として、この種のトピックに関するディスカッションをもっと見たいと思いますか? 以下のコメント欄で声を上げてください!