【问题标题】:Why there is big difference in memory usage between ps and free?为什么ps和free之间的内存使用有很大差异?
【发布时间】:2014-08-31 11:48:02
【问题描述】:
# ps hax -o rss|paste -d+ -s|bc; free
3963568
            total       used       free     shared    buffers     cached
Mem:       8176380    7602512     573868     119048     680236     501084
-/+ buffers/cache:    6421192    1755188
Swap:      4199420     327820    3871600

来自ps 的RSS 总和显示3963568,而free 告诉6421192free 的其他内容以及如何使用 ps 或其他工具对其进行跟踪?是碎片化吗?

【问题讨论】:

    标签: linux memory operating-system system-administration


    【解决方案1】:

    How to measure actual memory usage of an application or process? 所述:

    为什么 ps 是“错误的”

    根据您的看法, ps 不会报告进程的实际内存使用情况。它真正在做的是显示多少 如果它是唯一的进程,每个进程将占用实际内存 跑步。当然,一台典型的 Linux 机器有几十个 在任何给定时间运行的进程,这意味着 VSZ 和 RSS ps 报告的数字几乎肯定是“错误的”。

    因此,您的 ps 命令将倾向于 OVERCOUNT 进程使用的内存,因为它会重复计算共享的内存。

    另一方面,我可以看到您正在查看空闲输出的正确行,该行丢弃了用于缓冲​​区/缓存的内存。您需要查看 /proc/meminfo 以查看 RAM 中大部分差异的使用情况,如 https://serverfault.com/questions/240277/slab-uses-88gb-of-128gb-available-what-could-cause-this 中所述。

    Slab 缓存与 free 报告的缓冲区/缓存是分开的,因此假设它是造成大部分差异的原因,您可以在 /proc/slabinfo 中看到它的用途。如果是dentries(dentry_cache 行)或inode(有很多*inode_cache 行),您可以使用以下方法来释放RAM:

    sync; echo 2 >/proc/sys/vm/drop_caches 
    

    摆脱它们。

    【讨论】:

      猜你喜欢
      • 2022-10-16
      • 2013-12-12
      • 1970-01-01
      • 2020-06-28
      • 2016-03-20
      • 1970-01-01
      • 2015-12-25
      • 2021-03-21
      • 2021-06-14
      相关资源
      最近更新 更多