Wednesday, August 12, 2009

Memeriksa Penggunaan Memori di Linux

Setelah saya mengeluh tentang betapa borosnya aplikasi memakan memori, MDAMT mengirim link tentang analisis pemakaian memori yang menyesatkan. Artikel tersebut merujuk ke beberapa tool untuk analisis memori. Disana disarankan untuk memakai exmap. Sayang di kernel versi baru, exmap tidak berjalan mulus. Setelah di-patch-pun, untuk platform x86_64, exmap masih gagal menampilkan angka-angka yang benar.

Sebenarnya dengan command line, dapat juga diperoleh angka pemakaian memori yang cukup representatif:

$echo 0 $(cat /proc/4343/smaps | grep Pss | awk '{print $2}' | sed 's#^#+#' ) | bc
584017
Tapi hasilnya kok tidak jauh berbeda dengan top:
$ top -n 3 -p 4343
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.8%us, 4.9%sy, 0.0%ni, 89.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3851036k total, 3158780k used, 692256k free, 122012k buffers
Swap: 3903752k total, 571888k used, 3331864k free, 994192k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4343 andika 20 0 1135m 581m 23m S 0 15.5 60:53.80 /usr/lib/firefox-3.0.13/firefox
Salah satu komentar pada blog Lubos Lunak menyarankan untuk mencoba smem. Hasilnya cukup menarik:
$ ./smem -u
User Count Swap USS PSS RSS
andika 63 111268 1156636 1185668 1393260

$ ./smem > z; head -1 z; tail -3 z
PID User Command Swap USS PSS RSS
30205 andika evince file:///tmp/Paket-De 8 76328 78288 89284
12172 andika /usr/lib/opera/9.64/opera 0 123132 123602 126964
4343 andika /usr/lib/firefox-3.0.13/fir 8 581528 584012 595924

No comments: