cht電腦資訊Linux
adm Find login register

不要相信 ps 回報的 VSZ、RSS

coolcd
1 不要相信 ps 回報的 VSZ、RSS
Promote 1 Bookmark 02010-10-09quote  

以前用 ps aux 看在跑的程式,老是覺得許多小小的 linux 的程式怎麼好像也蠻耗記憶體的,今天查資料時看到一篇文章,才恍然大悟:

Understanding memory usage on Linux

大意是說,許多程式會把 shared library 佔的記憶體算進來,但實際上,linux 很聰明,它載入 shared library 後,如果其他程式要用,它可以不需要再重覆載入一次,而 ps 回報的,很不幸的,包含了它用到的 shared libraries,所以有時會多算。

作者也介紹了一個不錯用的工具 pmap,可以用來看某程式記憶體的佔用的情形。用法是:

pmap [-x | -d] [-q] [-A low,high] pid...

在 debian 中這個程式是包在 procps,與 top、ps、psgrep、pskill、sysctl......等同一個 package,所以應該大部分 distros 都有。

不妨看看你的 gcin 記憶體佔用狀況如何:  Laughing

$ pmap `pgrep gcin`|sort -h -k2

edited: 4
eliu
2
Promote 0 Bookmark 02010-10-09quote  

pmap 裏面的 gcin1.so 怎麼會接近實際的 strip 過的 gcin1.so 的大小,gcin1.so 是把一些很少用的功能放在裏面,需要的時候才 load 進來。

原本我認為 .so 裏面的 functions  應該是有 call 到的時候才 load 進來,照 pmap 看起來似乎不是。

不過看起來 .so 全部 load 進來似乎不合理,這樣浪費 memory。

coolcd
3
Promote 0 Bookmark 02010-10-09quote  

ps 已經有問題了,搞不好 pmap 顯示的資訊也有問題  Tongue out

eliu
4
Promote 0 Bookmark 02010-10-09quote  

我就不相信 libc 裏面的 function 全部有用到所以 load 進來


pmap : 1384K r-x--  /lib/i686/libc-2.10.1.so

file size: 1433972  /lib/i686/libc-2.10.1.so

cht電腦資訊Linux
adm Find login register
views:19436