我們已經知道從’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