Sau đây là việc sử dụng bộ nhớ mysql
và apache
tương ứng trên máy chủ của tôi. Theo đầu ra của pmap
nói, mysql
đang sử dụng khoảng 379M và apache
đang sử dụng 277M.
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
So sánh điều này với đầu ra của top
, tôi thấy các giá trị gần như khớp với nhau.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10515 apache 20 0 271m 32m 3132 S 0.0 6.6 0:00.73 /usr/sbin/httpd
10436 mysql 20 0 370m 21m 6188 S 0.0 4.3 0:06.07 /usr/libexec/mysqld --basedir=....
Bây giờ các giá trị này chắc chắn không phải là mức sử dụng bộ nhớ hiện tại của hai quy trình đó, vì nếu nó đã vượt quá 512M ram
trên hệ thống của tôi và tôi hiểu thực tế rằng đây là kích thước của các trang được gán cho hai quy trình này và không thực sự kích thước của bộ nhớ được họ tích cực sử dụng. Bây giờ, khi chúng ta sử dụng pmap -x
, tôi thấy một phần bổ sung Dirty
cho thấy việc sử dụng bộ nhớ ít hơn nhiều cho quy trình. Như đã thấy trong ví dụ hiển thị bên dưới, Dirty
coloumn hiển thị 15M so với 379M trong coloumn đầu tiên. Câu hỏi của tôi là: Giá trị theo coloumn Dirty
có phải là lượng bộ nhớ 'thực' được sử dụng tích cực trong quá trình đó không? Nếu không, thì làm thế nào chúng ta có thể tìm ra cách sử dụng bộ nhớ thực của một quá trình? Không ps
và top
vì những lý do tương tự ở trên. Chúng ta có gì dưới đây không/proc
Điều đó sẽ cung cấp thông tin này?
[root@server ~]# pmap -x 10436 | grep total
total kB 379564 21528 15340
[root@server ~]#
[root@server ~]# free -m
total used free shared buffers cached
Mem: 489 447 41 0 52 214
-/+ buffers/cache: 180 308
Swap: 1023 0 1023
[root@server ~]#