如何测量Linux中所有用户空间进程的物理内存的当前和峰值使用情况?

如何测量Linux中所有用户空间进程的物理内存的当前和峰值使用情况?

我找不到 Linux 上所有用户空间进程的总物理内存使用量的来源。

我想测量一个复杂应用程序的内存使用情况,该应用程序由许多子应用程序(许多进程和 RDBMS)组成。我想记录当前Linux操作系统实例中所有进程在应用程序运行时的内存使用情况的发展情况。我对物理内存消耗感兴趣,或者如果不可能的话对常驻内存消耗感兴趣(RSS在顶部或PSS-PrivateRSS + SharedRSS/进程数)。主机上没有运行其他应用程序或进程(它们的内存使用量可以忽略不计)。

与其他类似问题不同,答案可能来自 Linux 客户机在 VMWare 容器内运行的附加信息(这可用于获取内存统计信息)。

不可能枚举所有的应用程序进程,因为它们太多了,而且它们的生命周期有时很短。

理想情况下,我想直接获得峰值内存使用情况,而不进行采样,因为我害怕错过峰值。

我的第一个猜测是采取/proc/内存信息和 use MemTotal – MemFree = CurrentMemoryUsage,但我也担心这是不正确的,因为Linux内核也可以声明内存,例如用于文件缓存,并且也会被记录为已用内存。此方法在估计峰值内存使用量方面也不准确。

使用时间或者/proc//smaps这是不可能的,因为应用程序中有太多独立的进程,并且它们的运行时间可能非常短。

相关内容