Linux Plumbers Conference 2020で、Microsoft開発者は、実験プロジェクト、つまりARMサーバープロセッサ用にLinuxカーネルを最適化することについて話しました。チーフソフトウェア開発マネージャーのJanBirmanがプレゼンテーションを行いました。
専門家によると、プロジェクトは社内の要請により開始されたという。 Linuxは、Azure Cloud、Azure Sphere、Windows Subsystem forLinuxなどのプロジェクトですでに使用されています。 Biermanのチームは、64ビットARMまたはx86プロセッサを使用してLinuxでクラウドサービスのパフォーマンスを最大化するという任務を負っていました。開発者は、独自のパラメータとフラグを使用して、オペレーティングシステム用のカーネルをコンパイルすることができました。
元のディストリビューションは、GCC 9.2.1、binutils 2.33、およびカーネル5.3がプリインストールされたUbuntu19.10です。サーバープロセッサ-64ビットARMMarvellThunderX2。ブレーンストーミングの後、チームはLTOとPGOの最適化を使用してカーネルを構築することを決定しました。
プロファイリングの最適化(PGOまたはFDO)と通信時間の最適化(LTOまたはLTCG)は、ビルドプロセスを大幅に遅くし、コンパイラが動作するためにより多くのRAMを必要としますが、理論的には、コマンドの実行速度が10〜20%向上します。 PGOが開発者によって使用されることはめったになく、LTOは最近カーネルやその他のパッケージの構築に使用されています。以前は、GCCおよびLLVMコンパイラの互換性の問題により、開発者はリンク時間の最適化の使用に慎重でした。 Birmanのチームは、経験豊富なLinuxカーネル開発者のAndy Kleenに助けを求めました。彼は、LTOをARMプロセッサで正しく動作させるためのパッチをリリースしました。 PGOを機能させるために、開発者はドキュメントを調査し、試行錯誤によって安定させました。
コアビルドが完了した後、チームはオープンソースの再常駐NoSQLデータベース管理システムでパフォーマンスをテストしました。さまざまなコマンドを実行した後、開発者はコマンド実行の速度が5〜20%向上したことを報告しました。内部redisベンチマークテストから取得したデータ。
ちなみに、MicrosoftはWindows 10用のアップデートKB4566116をリリースしました。このアップデートでは、1909および1903OSバージョンでWindowsSubsystem for Linux 2(WSL 2)のサポートが追加されています。これにより、本格的なLinuxカーネルを使用できるようになります。WSL2では、デフォルトではWindowsの一部ではありませんが、動的にロードされ、OSに組み込まれているツールを使用して更新されます。