free 和 htop 报告完全不同的数字

free 和 htop 报告完全不同的数字

请参阅以下屏幕截图:

htop 与 免费

htop和都报告内存的“总”容量为 8GB free,但是free报告只“使用了” 2.7GB, 而htop报告使用了 7.53GB。free报告 5GB 是缓冲区/缓存, 而htop报告其为 100MB。

我认为htop这里是正确的,因为系统运行缓慢并且kswapd0CPU 使用率很高。

造成这种不匹配的原因是什么?

答案1

https://www.linuxatemyram.com/

缓存与已使用之间的典型混淆。htop缓存被计为已使用,但free实际上并非如此。由于这是 Linux,请/proc/meminfo自己阅读并了解计数器之间的关系。

编辑:您特别询问了缓存的差异。

从 procps 中释放出来显然可以回收页面缓存和 slab。从proc/sysinfo.c

  kb_main_cached = kb_page_cache + kb_slab_reclaimable;

htop 是页面缓存加上 slab 回收减去共享内存。linux/LinuxProcessList.c

   this->cachedMem = this->cachedMem + sreclaimable - shmem;

MemAvailable老实说,在现代 Linux 上,如果我关心这些数字,我会直接查看/proc/meminfo 中的其他一些计数器。


性能工具虽然非常有用,但可能会产生误导、混淆,并且文档记录不全。不要假设不同的工具会使用相同的算法计算名称相似的事物。


响应时间缓慢可能是任何原因造成的。存储 IOPS 限制或响应时间、来自慢速存储的内存页面插入、高 CPU 利用率(可能不是在您截取此屏幕截图的那一刻)、网络速度慢、应用程序编写不当等等。

量化哪些东西慢以及慢到什么程度。您有许多应用程序在运行:μTorrent Server、mysql、mongo、plex 和其他一些容器。打开慢查询日志。分析应用程序。将您能想到的所有性能指标记录到时间序列数据库中并查看图表。

相关内容