我目前正在对发生驱动器故障的 btrfs NAS (~20TB) 进行重建。这需要几天的时间。我的问题是大约每 24 小时 RAM 就会被填满,内核就会开始终止进程,直到整个系统崩溃。
htop
将其显示为用户进程内存使用情况,但没有用户进程显示任何显着的内存使用情况:
free
将其显示为缓冲/缓存 RAM:
# free -h
total used free shared buff/cache available
Mem: 15G 923M 1.0G 16M 13G 5.0G
Swap: 7.9G 0B 7.9G
正如你所看到的,bio
slab 的使用量非常大。运行sync && echo 3 > /proc/sys/vm/drop_caches
会清除使用情况,但完全dentry
不影响。bio
该 NAS 运行基于 CentOS 的 Rockstor。有问题的机器位于 kernel 上4.4.5-1.el7.elrepo.x86_64
。在 RAM 使用量达到进程开始被终止的程度之前,内核消息中没有任何值得注意的内容。
这是 BTRFS 或内核中的内存泄漏错误吗?如果这是一个需要报告的错误,我如何确定将其报告给哪个包?
有没有办法清除缓存使用情况,bio
以便我可以完成此 RAID 重建,而无需在系统因 RAM 不足而崩溃时每天重新启动一次?
出于病态的好奇心,如果这是内核缓存,为什么将htop
其报告为用户进程内存使用情况(绿色条)?