Berikut ini adalah penggunaan memori mysql
dan apache
masing - masing di server saya. Sesuai output pmap
katakanlah, mysql
menggunakan sekitar 379M dan apache
menggunakan 277M.
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
Membandingkan ini dengan output dari top
, saya melihat nilai hampir cocok.
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=....
Sekarang nilai-nilai ini jelas bukan penggunaan memori saat ini dari dua proses, karena jika itu sudah melebihi 512M ram
pada sistem saya dan saya mengerti fakta bahwa ini adalah ukuran halaman yang ditugaskan untuk dua proses ini dan tidak benar-benar ukuran memori yang aktif digunakan oleh mereka. Sekarang, ketika kita gunakan pmap -x
, saya melihat kolom tambahan Dirty
yang menunjukkan penggunaan memori jauh lebih sedikit untuk proses tersebut. Seperti yang terlihat pada contoh di bawah ini, Dirty
kolom menunjukkan 15M sebagai lawan dari 379M di kolom pertama. Pertanyaan saya adalah: Apakah nilai di bawah kolom Dirty
adalah jumlah memori 'nyata' yang digunakan secara aktif oleh proses itu? Jika tidak, lalu bagaimana kita bisa mengetahui penggunaan memori nyata dari suatu proses? Tidak ps
dan top
untuk alasan yang sama di atas. Apakah kita punya sesuatu di bawah/proc
yang akan memberikan info ini?
[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 ~]#