Apple は Rosetta 2 技術の強化を続けており、Total Store Ordering(TSO)メモリモデルのサポートを通じて、 Apple Silicon 上で動作する Linux 仮想マシンの性能を大幅に向上させています。この開発は、ARM ベースのシステムにおける x86_64 バイナリ互換性の重要な進展を示しています。
TSO サポートの重要性
新しく発表されたカーネルパッチは、再コンパイルされた x86_64 命令に対する TSO メモリモデルサポートを可能にし、 Linux 環境での Rosetta の性能を向上させる可能性があります。この強化には、ACTLR.TSOEN ビットのコンテキストスイッチングサポートや、prctl API を通じた新しいプロセス制御機能が含まれています。
コミュニティの反応と実際の影響
開発者コミュニティはこの強化を肯定的に受け止めており、特にその実用的な利点を強調しています。ある開発者は次のように経験を共有しています:
現時点で Mac の最も気に入っている機能は Linux 向けの Rosetta 2 です。amd64 アーキテクチャでしかコンパイルできないライブラリに強く依存したプロジェクトを長年進めてきましたが... 速度の低下は感じられません。ただし、並行処理やスレッドのテストについては、 Rosetta に対応するためにスリープ時間を調整する必要がありました。 Source
技術的進歩と制限
最近の開発では、ベクトル拡張のサポートも改善され、今年から Rosetta は AVX2 をサポートするようになりました。これにより、ベクトル拡張を必要とするコンパイル済みバイナリを扱う際に開発者が直面していた重要な制限が解消されました。
実装における課題
パッチは利用可能ですが、手動でのカーネルパッチ適用が必要であり、これは開発者コミュニティで懸念を引き起こしています。 Docker や Colima などの一般的な開発ツールは現在、これらの TSO 最適化をデフォルトで実装していませんが、導入に向けた議論は進行中です。
アップストリームへの貢献の試み
Apple はこれらの変更を Linux カーネルにアップストリームしようと試みましたが、断片化や非標準的な実装アプローチに関する懸念から、パッチは却下されました。これは、プロプライエタリな最適化とオープンソースシステムの橋渡しにおける継続的な課題を浮き彫りにしています。
将来への影響
この開発は、特に仮想化環境において、開発者のワークフローをサポートする Apple の継続的な取り組みを示しています。主に仮想化された Linux 環境を対象としていますが、一部のコミュニティメンバーは、これらの最適化がベアメタル Linux インストールでも機能すると指摘していますが、これはサポートされていないユースケースとなっています。