以下是服务器上mysql
和apache
上的内存使用情况。根据输出的pmap
说,mysql
正在使用大约379M,apache
正在使用277M。
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
将其与的输出进行比较top
,我看到值几乎匹配。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10515 apache 20 0 271m 32m 3132 S 0.0 6.6 0:00.73 /usr/sbin/httpd
10436 mysql 20 0 370m 21m 6188 S 0.0 4.3 0:06.07 /usr/libexec/mysqld --basedir=....
现在,这些值绝对不是这两个进程的当前内存使用情况,因为如果超过了ram
我的系统上的512M ,我就知道这些是分配给这两个进程的页面大小,而不是真正的它们主动使用的内存大小。现在,当我们使用时pmap -x
,我看到一个额外的提示Dirty
,显示该进程的内存使用量要少得多。如以下示例所示,该列Dirty
显示15M,而第一个列显示379M。我的问题是:列值下的值Dirty
是该进程正在积极使用的“实际”内存量吗?如果不是,那么我们如何找出进程的实际内存使用情况?不ps
和top
上面同样的原因。我们有什么下/proc
这将提供此信息?
[root@server ~]# pmap -x 10436 | grep total
total kB 379564 21528 15340
[root@server ~]#
[root@server ~]# free -m
total used free shared buffers cached
Mem: 489 447 41 0 52 214
-/+ buffers/cache: 180 308
Swap: 1023 0 1023
[root@server ~]#