释放 nvidia 驱动程序泄漏的内核内存

释放 nvidia 驱动程序泄漏的内核内存

我在显卡上运行 caffe 深度学习库,该库会执行一些奇特的操作,例如将一些大文件映射到内存中,并将缓冲区从 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 驱动程序的泄漏。是否有可能以某种方式清理这些分配?和,我怎样才能删除上面的 mlocked 内存?

答案1

显然,这是 nvidia 驱动程序中的一个错误。将驱动程序从 361.18-r4 更新到 364.15 后,我不再能够重现该问题。因此,我考虑通过更新来修复内存泄漏。

相关内容