Linux 7.3でVRAM不足時のパフォーマンスが大幅改善
Linux 7.3 improves performance when running out of vRAM
Linuxカーネル7.3で、GPUのVRAMが不足した際のパフォーマンスと安定性を改善するパッチがマージされた。従来はVRAM不足でクラッシュや深刻なパフォーマンス低下が起きていたが、今回の変更により、メモリ退避時のデッドロックを回避し、スムーズな動作が可能になる。本記事では、VRAMオーバーコミットの理論と実際の課題、そしてカーネル内部のロック機構の問題とその解決策を解説する。
「VRAMを使い切った場合、パフォーマンスが低下するのは避けられないが、アクセスパターンによっては、パフォーマンスを完全に台無しにせずにVRAMを使い切ることも可能かもしれない。」
HNでの議論
298- SquareWheel
これは素晴らしい改善のようで、いずれメインラインに取り込まれるのを楽しみにしています。ただ、残念ながら今はNvidiaを使っていて、VRAMに苦労しています。Nvidiaはページングをまったくサポートしていないようです。
仮想メモリの断片化についての部分が気になります。カーネルがそのメモリをその場で時々デフラグするのは理にかなっているでしょうか?それによって目立ったひっかかりが生じると思いますが、それ以外のパフォーマンスは向上し、一部のアプリケーションがちょうど収まるようになるかもしれません。
- krisknez
RAMがいっぱいになったときにPCがフリーズして使えなくならないようなアップデートがあるといいのですが... LinuxとWindowsではこれに対する対処が異なり、Windowsにはこの問題がないのを覚えています。
- kjuulh
素晴らしい記事です。Linuxカーネルの作業に関する記事を読むたびに何かを学べる気がします。
優先度付きLRUは、アプリケーション固有になりすぎずに、ゲームのVRAMをかなりうまく処理してくれるのではないでしょうか。
VRAMからディスク、特にNVMeへの直接スワップはどうでしょうか。大規模なワークロードで直接ディスクにスワップするのは実現可能でしょうか。PCIe経由でアセットを直接ストリーミングするのに使われているのは知っていますが、NVMeをGPU VRAMのスワップとして使った場合のコンピュートワークロードのパフォーマンスがどうなるか気になります。
- hypfer
当然の疑問を投げかけさせてください:
これはコンピュートワークロード、特にLLM推論にとって何を意味するのでしょうか?
何か意味があるのでしょうか、それともこれは純粋にゲーム向けの話なのでしょうか?
- d3Xt3r
なんてこった、7.2がちょうどリリースされたばかりで、パフォーマンスやゲーム関連の素晴らしい改善(ラージフォリオ、キャッシュ認識スケジューリング、MGLRUの再利用改善、Fair GPU Schedulerなど)が満載なのに... もう7.3が待ちきれません。
一方、Windowsの世界ではユーザーはアップデートを嫌っています... 正直、ユーザーが「ああ、次のPatch Tuesdayが待ちきれない!」と叫んだ例を一つも思い浮かべられません。
- londons_explore
私は主に、未使用またはほとんど使われないテクスチャを大量に持つアプリやゲームによるVRAM節約に興奮しています。
ゲーム開発者はこういうことにあまり注意を払わないことが多く、まったく使われないデータが文字通りギガバイト単位である可能性があります。
- exceptione
素晴らしい記事です!著者と同じ直感を持っています。メモリを割り当てる際、最終的にはアプリケーション自身が、VRAMへの固着性についてカーネルに知らせる最適な立場にあります。カーネルができる最善のことは推測することです。
余談ですが、低レベルのパフォーマンスエンジニアリングにおいて、若いトランスジェンダーの人々にどれだけ恩恵を受けているかに驚かされます。
- nickjj
この投稿はパフォーマンスに焦点を当てていますが、VRAMが満杯になったときに、アプリが割り当て可能なRAMがないと見てクラッシュすることについてはどうでしょうか?
2GBのメモリを搭載したNVIDIA 750 Tiを使っていたときにこの問題があったのを覚えています。FirefoxやGhosttyのターミナルをいくつか開くだけで(どちらもGPUアクセラレーション)、それらのアプリがクラッシュしたり、コンテンツをレンダリングできなくなったりしました。コンポジタ(kwin、niriなど)もクラッシュしたり不安定になったりすることがありました。数時間ごとに再起動しなければなりませんでした。完全なシステム不安定性でした。
この問題はWaylandでのみ発生し、Xウィンドウに切り替えると問題はなくなりました。
それ以来、AMD RX 480(8GB)GPUに切り替えましたが、Waylandでこの問題は一度も発生していません。GPUメモリがいっぱいになると、システムメモリがシームレスに代わりに使用されます。NVIDIAカードでは、VRAMが利用できない場合にシステムメモリに割り当てを戻すことがなかったように感じました。これはLinuxでのみ問題でした。同じNVIDIAカードはWindowsでは10年以上問題なく、VRAM割り当てに関する不安定性はゼロでした。
多くの人々がNVIDIAのフォーラムでLinuxでの同じ問題を何年も報告していました。
約9か月前に、ここで詳細とデモビデオをたくさん書きました:https://nickjanetakis.com/blog/gpu-memory-allocation-bugs-wi... しかし、それ以降、AMDへの切り替えでこれらの問題の多くは解決されました。
- Beijinger
私が欲しいのは何だと思いますか?状況が悪化したときに、特定のアプリ(例えばChrome)にkill / kill -9シグナルを送るアプリケーションです。
- Lunar5227
よく書かれていて、非常に有益です。Linuxカーネル開発のためにこうした熱心な人々がいることを嬉しく思います!