我正在尝试弄清楚是什么占用了我的 Linux(ubuntu 20.04)服务器上的内存。
重启后不久,htop 显示以下内容:
这表明当前正在使用 17 GB 的内存。在我重新启动之前,它显示为 29.6 GB,并且计算机似乎运行缓慢。htop 窗口按内存排序,使用率最高的进程使用了 0.6% 的内存。
另一个问题建议使用此命令:
ps -e -orss=,args= | sort -b -k1,1n
使用率最高的进程报告 209596 千字节(?)的内存,因此再次占用可用 RAM 的一小部分。
我尝试了一个相当神秘的命令来将该命令报告的第一列中的所有数字加起来ps
:
ps -e -orss=,args= | sort -b -k1,1n | sed 's/^ \+//' | cut -d \ -f 1 | sed '2,$s/$/+/' | sed '$s/$/p/' | dc
报告称总使用量为 2965816 千字节(?),(假设我的千字节假设正确)小于 3 GB,那么另外 14 GB 去哪儿了?
有人可以帮忙吗?
答案1
答案2
ZFS 具有基于 RAM 的磁盘缓存,它与常规 Linux 磁盘缓存是分开的。这与 ZFS 的非 Linux 起源有关。此 ZFS 内存缓存称为自适应替换缓存或 ARC。由于这种分离,ZFS ARC 在 Linux 中显示为“已使用”内存,而不是“缓存”,就像您对本机文件系统(例如 EXT4)所期望的那样。这就是许多刚接触 ZFS 的人担心 RAM 使用情况的原因,但没什么可担心的。除非您正在处理重复数据删除(您可能不会,也不应该这样做),否则内存对 ZFS 来说并不是一个大问题,这与许多人告诉您的相反。
您看到此磁盘缓存(以及内存)已填满,因为您正在移动(即读取)大量数据。ARC 的默认内存限制通常是 RAM 的 50%,但如果您希望设置最大值,则可以通过 zfs 内核模块参数“zfs_arc_max”进行配置。如果可用内存变得稀缺,ZFS 将释放部分 ARC,就像 Linux 的常规磁盘缓存一样。同样,没有什么可担心的;未使用的 RAM 是浪费的 RAM。
--亨克·阿切特帕德