ローカルAIがピン留めされたホストメモリを使用すると、なぜZFS ARCは縮小するのか?

エヴァ・ウォン は テクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

固定されたホストメモリを使用すると、回収不能なAI転送バッファによってカーネルが回収できるメモリ(ファイルシステムキャッシュを含む)への圧力が高まり、ZFS ARCが縮小します。

GPUランタイムは、デバイスがデータ転送中にページの移動やスワップを発生させずに済むよう、ホストページを固定します。これによりDMAの予測可能性は向上しますが、使用可能なRAMが減少すると、固定された割り当ては回収対象になりにくくなります。Linuxはreclaimとshrinkerを実行し、ZFSはキャッシュされたブロックを追い出すか、ARCの目標値を下げて、解放できない割り当てのためにより多くのメモリを残します。

固定ページによって、カーネルが回収できるメモリの種類が変わる

通常の匿名ページはスワップでき、クリーンなファイルキャッシュページは破棄できます。長期間固定されたページは、デバイスやドライバーが物理マッピングに依存しているため常駐し続け、新しい割り当てに利用できる柔軟なメモリプールを減少させます。

長期間のページ固定に関するLinuxのドキュメントでは、長期間のページ固定と通常の参照の違いを説明し、DMAユーザーがページを適切にマークする必要がある理由を示しています。この仕組みにより、固定メモリはカーネルが容易に移動または回収できるプロセス割り当てとは本質的に異なるものになります。

AIフレームワークは、ホストからデバイスへのコピーの高速化、データローダーキュー、オフロードのために、固定されたステージングバッファを使用します。複数のワーカーや大きすぎるプリフェッチキューによって、表示されている1つのバッチから想定される量を大幅に超えるホストメモリが固定されることがあります。この違いは、後の一般的な家庭内テストでも確認できます。

ARCは設計上、大規模な回収可能メモリの消費者である

Adaptive Replacement Cacheは、ストレージからの読み取りを避けるため、最近使用されたZFSブロックと頻繁に使用されるZFSブロックを保持します。Linuxではメモリ圧迫への対応に参加し、システムが別の場所でページを必要とすると、常駐サイズを縮小できます。自動化を進める前に、中間結果を検証できる状態にしておく必要があります。

OpenZFSのARCサイズとreclaimに関するドキュメントでは、ARCサイズの制御とreclaim関連の調整可能なパラメーターについて説明しています。設定された最大値は上限であり、圧力がかかっている状況でもキャッシュデータが常駐し続けることを保証するものではありません。この境界は、現実的な運用条件で個別に測定する必要があります。

固定バッファが増加したとき、ARCの追い出しはリークではなく、正しい対応である可能性があります。その結果、後になってキャッシュヒット率の低下、ディスク読み取りの増加、AIジョブ終了後にキャッシュが再び温まるまでのファイルアクセス低下として現れます。

統合メモリとコンテナのメトリクスは競合を隠すことがある

統合GPUでは、ダッシュボード上で使用量が異なる項目として表示されていても、モデルテンソルとファイルシステムキャッシュが同じ物理RAMを使用します。ディスクリートGPUでは、ホストのステージングメモリはVRAMとは分離されていますが、サーバー上ではARCと競合します。

OpenZFSによるLinuxのARC shrinker実装では、カーネルのメモリ管理にARCのreclaim動作を登録します。ソースレベルの証拠は、意図的なキャッシュ縮小と、アプリケーションがZFSに直接ブロックの破棄を命じている状態を区別するのに役立ちます。実際の影響は、複数の要因が限られたコンテキストを奪い合うときに現れます。

ARCが低下したときに、常に固定メモリが原因だと考えるのが失敗の境界です。大規模なファイルスキャン、明示的なARC制限、メタデータへの圧力、cgroup reclaim、仮想マシンのメモリ増加、通常の適応動作でも同じグラフが生成されます。固定数と割り当てのタイミングを確認してください。

固定バイト数をARC reclaimおよびキャッシュミスと相関させる

固定したAIワークロードを実行しながら、固定または回収不能なメモリ、MemAvailable、reclaimストール、ARCサイズと目標値、ARCヒット率、ZFS読み取り、固定バッファプールサイズ、ワーカー数、バッチサイズ、VRAM、リクエストレイテンシを記録します。AIを使用しないストレージのベースラインも含めてください。

共有ホストメモリを使用して、CPU、メモリ、ストレージの症状を切り分けます。ページング可能な転送、より浅いプリフェッチ深度、少ないワーカー数、上限を設けた固定プールで再試行し、各実行で変更する制御は1つだけにします。この依存関係は、最終的なインターフェースでも明示したままにしてください。

ARCの縮小が固定プールの増加に追随し、プールを小さくすると緩和される場合、固定が原因であると判断できます。ストレージミスが他のサービスに悪影響を与える場合はプールに上限を設けますが、アクセラレーターが飢餓状態にならないだけの固定は維持してください。適切なバランスは、同時に発生するNASの需要によって異なります。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.