- 论坛徽章:
- 0
|
HP-UX上glance, top和ps察看进程内存数据之间的关系及计算
常常有人会问,在HP-UX上面,采用glance,top,ps等工具察看进程的内存情况,各个数据之间的关系比较混乱,常常不能明白各个数值之间的关系,现在对此作一个简要的说明。
在每个进程中,内存的使用分为多个类型,有TEXT(程序的可执行代码),DATA(数据,所有通过malloc,calloc等动态分配的数据在这里), STACK(局部变量,局部数组等会在这里),SHM(共享内存),MEMMAP (动态连接库的内存映射和通过mmap得到的内存,这又分为两种,其一动态链接库的可执行代码部分,这部分是各进程share的,还有一部分是动态链接库的数据部分,这是private的),UAREA(每一个线程会有这么一块区域)。
在Glance看到的RSS是指在真实内存中的数据大小, VSS是虚拟内存的大小。
所以在Glance的 Memory report中看到的Text,DATA,STACK,Shmem就不难理解了。Other就是非Text, 非Data,非Stack,非Shmem的其他内存,如MEMMAP, UAREA,NULLDR等等。
所以以glance的memory report为基础,各结果之间的计算关系为:
glance的Process Detail中的Total RSS/VSS = glance memory report中所有PRIV的内存大小 + (所有SHARE的内存大小/引用次数),由于share内存引用次数的不一样,因此该值相对不准。
ps中的sz为glance中real的data, text, stack的总和,vsz为glance中virtual的data, text, stack的总和,不包含share memory,Other memory等
top中的SIZE为glance中virtual的data,text,stack和other的和
top中的RES为glance中memory report中所有标记为PRIV的内存大小的和。
所以各个程序之间得到的结果较为混乱,但是glance是比较全的。 |
|