cht電腦資訊Linux
adm Find login register

不要相信 ps 回報的 VSZ、RSS

coolcd
joined: 2008-01-21
posted: 2601
promoted: 348
bookmarked: 95
1subject: 不要相信 ps 回報的 VSZ、RSSPromote 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

joined: 2007-08-09
posted: 11478
promoted: 617
bookmarked: 187
新竹, 台灣
2subject: Promote 0 Bookmark 02010-10-09quote  

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

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

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

coolcd
joined: 2008-01-21
posted: 2601
promoted: 348
bookmarked: 95
3subject: Promote 0 Bookmark 02010-10-09quote  

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

eliu

joined: 2007-08-09
posted: 11478
promoted: 617
bookmarked: 187
新竹, 台灣
4subject: 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:19468