我正在检查我的服务器资源使用情况,并注意到“cma”进程正在使用大量RAM。
top - 15:04:54 up 127 days, 21:00, 1 user, load average: 0.27, 0.33, 0.24
Tasks: 157 total, 1 running, 156 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.9%us, 0.3%sy, 0.0%ni, 92.6%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 4043700k total, 4006616k used, 37084k free, 146968k buffers
Swap: 1052248k total, 1052240k used, 8k free, 1351364k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4308 root 16 0 2080m 977m 4708 S 0.0 24.8 0:00.02 cma
4396 root 15 0 2080m 977m 4708 S 0.0 24.8 0:00.10 cma
4397 root 16 0 2080m 977m 4708 S 0.0 24.8 3:47.36 cma
4398 root 15 0 2080m 977m 4708 S 0.0 24.8 2:31.40 cma
4399 root 15 0 2080m 977m 4708 S 0.0 24.8 0:00.34 cma
4400 root 18 0 2080m 977m 4708 S 0.0 24.8 0:00.00 cma
4403 root 15 0 2080m 977m 4708 S 0.0 24.8 0:47.36 cma
4404 root 18 0 2080m 977m 4708 S 0.0 24.8 0:00.07 cma
4405 root 18 0 2080m 977m 4708 S 0.0 24.8 0:00.04 cma
4406 root 15 0 2080m 977m 4708 S 0.0 24.8 0:12.14 cma
4408 root 19 0 2080m 977m 4708 S 0.0 24.8 0:00.00 cma
我从去年发现this forum post,显然这些过程与McAfee病毒扫描有关。
我在其中一个进程上运行了pmap,这是输出的最后一行:
mapped: 2130892K writeable/private: 2113632K shared: 40K
这个过程真的使用2.1GB的内存吗? Top是否准确报告了内存使用情况>
谢谢!
答案 0 :(得分:2)
VIRT列告诉您映射到进程的虚拟内存段的总大小 - 这包括可执行文件本身,库,数据段,堆栈,堆,内存映射文件等。从某种意义上说,它是总数进程当前有权以某种方式触摸(读,写,执行)的内存量。该过程不一定使用所有这些,这是RES列报告较小数字的几个原因之一。 RES是当前实际存在于物理内存中的VIRT大小子集的总大小。这个过程实际使用的内存量是一个更好(但仍然不是很好)的衡量标准 - 它在内存中的事实表明它已经或正在被积极使用。但是,如果您的系统有大量内存,则可能在3天前触摸了该RES号的一部分,而不是之后,因此可能无法主动使用。相反,如果您的内存不足,则该过程可能会尝试主动使用超过RES当前指示的内容,这将导致分页/交换活动和性能问题。
然后,在程序的多个实例之间共享某些类型的内存(可执行文件,库)的趋势,IPC类型共享内存的存在,以及所有因素的所有因素#&# 34;这个过程使用了多少内存?" ...
换句话说,它并不像你想象的那么简单......