iT邦幫忙

DAY 8
4

Linux系統效能調教系列 第 8

Linux系統效能分析與探討 - [8] 了解process使用記憶體的狀況 - pmap

  • 分享至 

  • xImage
  •  

我們已經知道從’ps’’top’命令來獲得process的運作情情形,除了process本身的狀態,還有CPU與記憶體的使用情形。然而你若是想得知更準確詳細的記憶體使用狀況你就必須解借助’pmap’指令了。

’ps aux’命令下我們可以了解記憶體的使用狀況,就如下面這個畫面所示:

#syslogd的內容
USER       PID   %CPU   %MEM     VSZ    RSS   TTY   STAT   START    TIME    COMMAND
root          2397         0.0        0.0    1816      620      ?        Ss      Sep06      0:01    syslogd -m 0

其中VSZ與RSS是跟記憶體息息相關的數值,又根據man page(man ps),他們的定義是:

vsz        VSZ      virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change.
rss        RSS      resident set size, the non-swapped physical memory that a task has used (in kiloBytes).

簡單的說VSZ代表的是虛擬記憶體的使用量,RSS代表實體記憶體的使用量。但是這裡RSS的值,是包括shared memory的。Linux會把一些share library(lib*.so)載入記憶體中,而不同的process會共享部份的share library,也就是說這些share library只被Linux在載入一次,而process可以從重複引用。如果你想要看process中不含shared memory的實體記憶體使用量,就得透過’pmap’指令。如以下畫面所示:

#syslogd的內容
pmap -d 2397
2397:   syslogd -m 0
Address   Kbytes Mode  Offset           Device    Mapping
002c2000      32 r-x-- 0000000000000000 0fd:00000 syslogd
002ca000       4 rw--- 0000000000008000 0fd:00000 syslogd
003b3000      40 r-x-- 0000000000000000 0fd:00000 libnss_files-2.5.so
003bd000       4 r---- 0000000000009000 0fd:00000 libnss_files-2.5.so
003be000       4 rw--- 000000000000a000 0fd:00000 libnss_files-2.5.so
003d9000       4 r-x-- 00000000003d9000 000:00000   [ anon ]
00696000    1356 r-x-- 0000000000000000 0fd:00000 libc-2.5.so
007e9000       8 r---- 0000000000153000 0fd:00000 libc-2.5.so
007eb000       4 rw--- 0000000000155000 0fd:00000 libc-2.5.so
007ec000      12 rw--- 00000000007ec000 000:00000   [ anon ]
00d86000     108 r-x-- 0000000000000000 0fd:00000 ld-2.5.so
00da1000       4 r---- 000000000001a000 0fd:00000 ld-2.5.so
00da2000       4 rw--- 000000000001b000 0fd:00000 ld-2.5.so
0982e000     132 rw--- 000000000982e000 000:00000   [ anon ]
b7f75000       8 rw--- 00000000b7f75000 000:00000   [ anon ]
b7f84000       4 rw--- 00000000b7f84000 000:00000   [ anon ]
bffa9000      84 rw--- 00000000bffe9000 000:00000   [ stack ]
mapped: 1812K    writeable/private: 256K    shared: 0K

pmap命令的用法是必須使用process ID(PID)來當作輸入參數,PID值可以透過’ps’命令取得。’pmap’的輸出中writeable/private就是指不含shared memory純脆被process所佔用的實體記憶體空間。

[本系列文章]

Linux系統效能分析與探討 - [1] CPU的效能關鍵字
Linux系統效能分析與探討 - [2] 記憶體的效能關鍵字
Linux系統效能分析與探討 - [3] Linux作業系統網路模組的效能關鍵字
Linux系統效能分析與探討 - [4] Linux block device的效能關鍵字
Linux系統效能分析與探討 - [5] 了解process的運作的指令 1 - ps
Linux系統效能分析與探討 - [6] 了解process的運作的指令2 - top
Linux系統效能分析與探討 - [7] 了解process的運作的指令3 - pstree


上一篇
Linux系統效能分析與探討 - [7] 了解process的運作的指令3 - pstree
下一篇
Linux系統效能分析與探討 - [9] 顯示系統的附載狀況 - uptime, w
系列文
Linux系統效能調教31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
SunAllen
iT邦研究生 1 級 ‧ 2012-10-02 13:53:23

讚酷,謝謝chiounan大大分享,之後向您借來一用

我要留言

立即登入留言