私はグラフィックカードで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ドライバーからのリークを確認します。それらの割り当てを何らかの方法でクリーンアップすることは可能ですか?そして、どのようにロックされたメモリを上にドロップできますか?
この問題をどのようにして調査できましたか?同様の問題が発生していると思うので、根本原因を確認したいと思います。
—
luka5z
@ luka5z / proc / vmallocinfoを確認してください。nvidiaモジュールによって過剰な数のメモリ割り当てが行われる場合があります(質問テキストを参照)。私はそれらのどれもあるべきではないと言っているわけではないことに注意してくださいが、合計使用量が妥当かどうかを確認するために(nvidiaモジュールの)割り当てサイズを合計することができます。
—
アレクサンダーセルゲイエフ
rmmod
それをinsmod
しなければならないと思います。