Lệnh `
$ whatis pmap
pmap (1) - report memory map of a process
$ pmap --help | grep Usage -A1
Usage:
pmap [options] pid [pid ...]
vậy `pmap` nhận args là pid (hoặc nhiều pid).
xem memory map của một lệnh `top` đang chạy:
$ pmap `pgrep top`
787: top
0000000000400000 92K r-x-- top
0000000000616000 4K r---- top
0000000000617000 8K rw--- top
0000000000619000 156K rw--- [ anon ]
00000000011e8000 672K rw--- [ anon ]
00007f85193e4000 44K r-x-- libnss_files-2.18.so
00007f85193ef000 2048K ----- libnss_files-2.18.so
00007f85195ef000 4K r---- libnss_files-2.18.so
00007f85195f0000 4K rw--- libnss_files-2.18.so
00007f85195f1000 40K r-x-- libnuma.so.1
00007f85195fb000 2044K ----- libnuma.so.1
00007f85197fa000 4K r---- libnuma.so.1
00007f85197fb000 4K rw--- libnuma.so.1
00007f85197fc000 1668K r-x-- libc-2.18.so
00007f851999d000 2044K ----- libc-2.18.so
00007f8519b9c000 16K r---- libc-2.18.so
00007f8519ba0000 8K rw--- libc-2.18.so
00007f8519ba2000 16K rw--- [ anon ]
00007f8519ba6000 12K r-x-- libdl-2.18.so
00007f8519ba9000 2044K ----- libdl-2.18.so
00007f8519da8000 4K r---- libdl-2.18.so
00007f8519da9000 4K rw--- libdl-2.18.so
00007f8519daa000 360K r-x-- libncursesw.so.5.9
00007f8519e04000 2044K ----- libncursesw.so.5.9
00007f851a003000 16K r---- libncursesw.so.5.9
00007f851a007000 8K rw--- libncursesw.so.5.9
00007f851a009000 64K r-x-- libprocps.so.1.1.2
00007f851a019000 2048K ----- libprocps.so.1.1.2
00007f851a219000 4K r---- libprocps.so.1.1.2
00007f851a21a000 4K rw--- libprocps.so.1.1.2
00007f851a21b000 72K rw--- [ anon ]
00007f851a22d000 128K r-x-- ld-2.18.so
00007f851a281000 132K rw--- [ anon ]
00007f851a2a2000 1572K r---- locale-archive
00007f851a42b000 20K rw--- [ anon ]
00007f851a44b000 4K rw--- [ anon ]
00007f851a44c000 4K r---- ld-2.18.so
00007f851a44d000 4K rw--- ld-2.18.so
00007f851a44e000 4K rw--- [ anon ]
00007fff98aa9000 132K rw--- [ stack ]
00007fff98b24000 8K r-x-- [ anon ]
ffffffffff600000 4K r-x-- [ anon ]
total 17572K
Con số ở dòng total cũng chính bằng giá trị ở cột VIRT khi xem bằng `top` (verified by +Hiep Nguyen Van ).
Theo `man top`, VIRT là:
VIRT -- Virtual Image (kb)
The total amount of virtual memory used by the task. It includes all code, data and shared libraries plus pages that have been swapped
out and pages that have been mapped but not used.
Check xem `firefox` dùng tổng cộng bao nhiêu RAM
hvn@archhvn: ~ () $ pmap `ps -C firefox -opid=` | grep totalhoặc (suggested by +Hiep Nguyen Van )
total 1369772K # ~ 1.3G
$ pmap `pgrep firefox` | grep totalCheck xem 2 process `tmux` riêng biệt dùng bao nhiêu RAM
total 1678416
hvn@archhvn: ~ () $ pmap `ps -C tmux -opid=` | grep totalOption -x khiến `pmap` in ra kết quả ở dạng "extend" chi tiết hơn nhiều lần:
total 20024K
total 15820K
pmap -x <process pid>
Đính chính là TOP cũng xem đc ram mà 1 process dùng nhé. Cái cột Res (Resident Memory Size)
ReplyDelete2 cách tính khác nhau, cái này phải viết hẳn một bài so sánh.
DeleteKhác nhau à, thử so sánh với cái VIRT trong top xem có giống ko, VIRT là virtual memory size.
Deletenói cái RES khác chứ không phải cái VIRT
Deleteo: VIRT -- Virtual Image (kb)
The total amount of virtual memory used by the task. It includes all code, data and shared libraries plus pages that have been swapped
out and pages that have been mapped but not used.
q: RES -- Resident size (kb)
The non-swapped physical memory a task has used.
btw, nội dung bài viết đã sửa lại "top" -> ps
Đã test, pmap 'total' là kích thước lớn nhất mà program đc load vào memory (virtual memory) còn cột RES của lệnh top cho biết kích thước thật của program đc load vào memory.
Deleteupdated, thanks
DeleteThêm nữa, dùng lệnh 'pgrep firefox' trả về các pid cấp firefox ko cần phải 'ps.......'
ReplyDeletechỉ trong trường hợp cần lấy PID
Deletepkill để grep + kill
updated, thanks
DeleteCòn 1 điều nữa là ps cũng trả về được RSS (resident size) và VSZ (virtual size).
ReplyDeleteVí dụ:
ps aux | grep skype
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
1000 4771 2.2 3.6 540028 146196 pts/0 Sl 08:14 7:56 skype
http://virtualthreads.blogspot.com/2006/02/understanding-memory-usage-on-linux.html
ReplyDelete