nvidiaドライバーによってリークされたカーネルメモリの解放


2

私はグラフィックカードでcaffeディープラーニングライブラリを実行していますが、ライブラリはいくつかの巨大なファイルをメモリにmmapしたり、RAMからグラフィックカードにバッファをやり取りしたりするなど、いくつかの凝った処理を行います。しばらくして、システムで重いものが何も実行されていないときにかなりのメモリ使用量に気付きました(Xサーバーなしで、10プロセスのようなもの:getty、sshd、syslog-ng、bash、...):

MemTotal:       24688288 kB
MemFree:        19112788 kB
MemAvailable:   19102240 kB
Buffers:            6632 kB
Cached:            14892 kB
SwapCached:            0 kB

注目すべきは、を使用してキャッシュをドロップすることecho 3 > /proc/sys/vm/drop_cachesです。だから、それは何かのために使用されるおよそ5GiBです。そして、非常に近い数字がここで説明されています:

Active:          4658852 kB        <-- here
Inactive:           2312 kB 
Active(anon):    4644112 kB        <--- and here
Inactive(anon):      760 kB
Active(file):      14740 kB
Inactive(file):     1552 kB
Unevictable:        6352 kB
Mlocked:        17111149713616 kB  <-- that is also strange

カーネル空間でのnvidiaリークのアイデアを確認していると、次のような行が見つかりました。

0xffffc90005562000-0xffffc900055af000  315392    os_alloc_mem+0xc2/0xf0               [nvidia]       pages=76   vmalloc  N0=76

これは、nvidiaドライバーからのリークを確認します。それらの割り当てを何らかの方法でクリーンアップすることは可能ですか?そして、どのようにロックされたメモリを上にドロップできますか?


1
あなたはおそらくrmmodそれをinsmodしなければならないと思います。
ローレンス

この問題をどのようにして調査できましたか?同様の問題が発生していると思うので、根本原因を確認したいと思います。
luka5z

@ luka5z / proc / vmallocinfoを確認してください。nvidiaモジュールによって過剰な数のメモリ割り当てが行われる場合があります(質問テキストを参照)。私はそれらのどれもあるべきではないと言っているわけではないことに注意してくださいが、合計使用量が妥当かどうかを確認するために(nvidiaモジュールの)割り当てサイズを合計することができます。
アレクサンダーセルゲイエフ

回答:


1

どうやら、それはnvidiaドライバーのバグでした。ドライバーを361.18-r4から364.15に更新した後、問題を再現できなくなりました。だから、私はアップデートがメモリリークを修正することを検討しています。


Linuxで364.15ドライバーをどのようにインストールできましたか?LinuxのNVIDIA Webサイトから入手できる最新バージョンは、まだ2016.5.24にリリースされた361.45.11です。
ypx

1
gentooの@ypxははるかに簡単です(packages.gentoo.org/packages/x11-drivers/nvidia-driversを参照)。(今のところ)最後の可能なドライバは、ここで見つけることができます。us.download.nvidia.com/XFree86/Linux-x86_64/367.18/...
アレクサンダーSergeev

おかげで、私はこのダウンロードリストnvidia.com/object/unix.htmlを見つけ、短命のブランチからドライバー364.19を入手しました。私はそれが今なくなっていると思う...または以前ほど顕著ではない...それは長い実行後に保持されるかどうかを確認します。しかし、今ではずっと幸せです:D
ypx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.