Solaris上运行时进程的当前内存使用情况
有没有办法从运行过程中确定(甚至估计)Solaris进程的内存使用情况? 我需要编写一个函数来进行内存清理,以在进程变得过大时将进程保持在某个阈值以下。
看起来Solaris不支持getrusage或以任何方式查询系统当前的RSS / VSZ(内存使用情况),如Linux / Windows。
获取信息的一种方法是从/proc
文件系统读取数据。 您可以从/proc/self/psinfo
, /proc/self/map
或/proc/self/xmap
。 参见man -s 4 proc
。
所述/proc/self/psinfo
文件包含一个struct psinfo
/ psinfo_t
经由描述procfs.h
。 该结构包含size_t pr_size;
其中包含“以size_t pr_rssize;
字节计的过程映像大小”,以及size_t pr_rssize;
其中包含“以kBytes为单位的驻留集大小”。
/proc/self/map
和/proc/self/xmap
文件分别包含struct prmap
/ prmap_t
结构和struct prxmap
/ prxmap_t
结构的数组。 这两个结构都包含一个size_t pr_size;
字段定义为“以字节为单位的映射大小”。
请仔细阅读/proc
- 确保您了解您尝试读取的数据是否存储为32位或64位进程。 不速之客,我认为Solaris /proc
内容现在都是64位的。
上一篇: Current memory usage of process at runtime on Solaris
下一篇: How to measure the accruate memory usage for a code or process?