Penting untuk menemukan proses atau aplikasi yang memonopoli memori sistem jika terjadi masalah kinerja. Postingan tersebut mencantumkan beberapa perintah dasar untuk menghitung penggunaan memori pada sistem Linux umum.
1. Hitung penggunaan memori menggunakan SAR
# sar -r 1 10 Linux 2.6.32-504.el6.x86_64 (geeklab) 03/05/2018 _x86_64_ (16 CPU) 10:17:41 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 10:17:42 AM 1772488 31104712 94.61 382184 23831756 11675188 11.86 10:17:43 AM 1777348 31099852 94.59 382184 23831756 11675188 11.86 10:17:44 AM 1778412 31098788 94.59 382184 23831756 11675188 11.86 10:17:45 AM 1776720 31100480 94.60 382184 23831756 11675072 11.86 10:17:46 AM 1777932 31099268 94.59 382184 23831760 11675072 11.86 10:17:47 AM 1780848 31096352 94.58 382184 23831760 11675072 11.86 10:17:48 AM 1774460 31102740 94.60 382184 23831760 11675644 11.86 10:17:49 AM 1740080 31137120 94.71 382184 23831760 11717568 11.91 10:17:50 AM 1773608 31103592 94.61 382184 23831708 11675076 11.86 10:17:51 AM 1774752 31102448 94.60 382184 23831796 11675076 11.86 Average: 1772665 31104535 94.61 382184 23831757 11679414 11.87
Untuk menghitung memori bebas dari nilai Rata-rata gunakan rumus di bawah ini:
kbmemfree + kbbuffers + kbcached = actual free memory on the system
Menggunakan contoh di atas:
1772665 + 382184 + 23831757 = 25986606KB
Itu sekitar 24,78 GB memori bebas.
2. Hitung penggunaan memori menggunakan perintah gratis
# free -m total used free shared buffers cached Mem: 32106 30382 1723 3031 373 23273 -/+ buffers/cache: 6736 25370 Swap: 63999 2 63997
Dari contoh di atas, untuk mendapatkan memori bebas pada sistem gunakan:
-/+ buffers/cache ==> free column
Kolom gratis melaporkan 25370 MB sehingga cocok dengan perhitungan keluaran sar juga (dengan mengingat bahwa dalam nilai Rata-rata SAR digunakan)
Untuk mendapatkan memori yang digunakan pada penggunaan sistem:
-/+ buffers/cache ==> used column
Dalam kasus kami, memori yang digunakan adalah 6736MB.
3. Temukan 10 pengguna teratas yang menghabiskan lebih banyak memori pada sistem dalam persentase
Silakan gunakan sintaks shell sederhana yang menggunakan perintah ps:
# ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3} END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f\t%.2f\n",num[user], user, cpu[user], mem[user]) }' NPROC USER CPU MEM 29 oracle 0.10 4.00 1 ntp 0.00 0.00 1 rpc 0.00 0.00 5 user 0.00 0.00 1 dbus 0.00 0.00 1 mysql 0.00 0.30 12 daemon 0.00 0.60 2 postfix 0.00 0.00 12 apache1 2.40 4.80 1 rpcuser 0.00 0.00 349 root 7.70 3.30
Dari pengamatan contoh di atas, root memiliki 349 proses yang memakan 3,3% memori, oracle pengguna memiliki 29 proses yang memakan 4% memori, pengguna apache1 memiliki 12 proses yang memakan sekitar 4,8% memori, yang totalnya sekitar 12%. Nilai sekitar 12% juga dapat dilihat pada kolom sar 'commit'.
4. Periksa 10 Proses teratas yang menggunakan RSS ( Resident Set Size )
Silakan gunakan sintaks shell sederhana yang menggunakan perintah ps:
# ps -e -orss,pid=,user=,args=, | sort -b -k1,1n | pr -TW$COLUMNS| tail -10 74336 5509 root /opt/perf/bin/perfalarm 77212 8389 oracle /grid/CRS/bin/ohasd.bin reboot 78216 9731 root /opt/OV/lbin/agtrep/agtrep -start 96768 9808 root /opt/OV/hpcs/hpsensor 108580 12073 root /usr/lib/systemd/systemd-journald 136260 76477 root storapid start -name storapid 178316 5350 root /opt/OV/bin/oacore oacore /var/opt/OV/conf/oa/PipeDefinitions/oacore.xml 186168 10367 oracle /grid/CRS/bin/oraagent.bin 1013484 31562 root vxconfigd -x syslog 1317360 76463 root vxencryptd
Kolom pertama adalah RSS , yang kedua adalah PID , yang ketiga adalah USER dan keempat adalah Perintah Dieksekusi .
RSS value adalah yang paling penting di sini karena ini menunjukkan berapa banyak memori yang sebenarnya dialokasikan oleh proses dalam KB , jangan gunakan VSZ nilai yang menghitung memori 'diminta' berdasarkan proses, karena setiap proses mengalokasikan 'overhead' yang disajikan oleh nilai VSZ, di mana RSS melaporkan alokasi memori sebenarnya berdasarkan proses.
Setelah penghitungan keluaran RSS, 'digunakan ' memori dapat diperoleh dan dibandingkan dengan -/+ buffers/cache – kolom yang digunakan dari output gratis command — baik RSS maupun output dari perintah gratis harus cocok.