Saya agak bingung dengan beberapa hasil yang saya lihat dari ps dan gratis .
Di server saya, ini adalah hasil dari free -m
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 2048 2033 14 0 73 1398
-/+ buffers/cache: 561 1486
Swap: 2047 11 2036
Pemahaman saya tentang bagaimana Linux mengelola memori, adalah bahwa ia akan menyimpan penggunaan disk di RAM, sehingga setiap akses berikutnya lebih cepat. Saya percaya ini ditunjukkan oleh kolom "cache". Selain itu, berbagai buffer disimpan dalam RAM, ditunjukkan di kolom “buffers”.
Jadi jika saya mengerti dengan benar, penggunaan "sebenarnya" seharusnya menjadi nilai "bekas" dari "-/+ buffers/cache", atau 561 dalam hal ini.
Jadi dengan asumsi semua itu benar, bagian yang melempar saya adalah hasil dari ps aux
.
Pemahaman saya tentang ps
hasilnya, adalah bahwa kolom ke-6 (RSS), mewakili ukuran dalam kilobyte yang digunakan proses untuk memori.
Jadi ketika saya menjalankan perintah ini:
[[email protected] ~]# ps aux | awk '{sum+=$6} END {print sum / 1024}'
1475.52
Bukankah hasilnya seharusnya kolom “bekas” dari “-/+ buffers/cache” dari free -m
?
Jadi, bagaimana saya bisa menentukan penggunaan memori suatu proses di Linux dengan benar? Rupanya logika saya cacat.
Jawaban yang Diterima:
Salin/tempel jawaban saya dari serverfault tanpa malu-malu beberapa hari yang lalu
Sistem memori virtual linux tidak begitu sederhana. Anda tidak bisa hanya menambahkan semua bidang RSS dan mendapatkan nilai yang dilaporkan used
dengan free
. Ada banyak alasan untuk ini, tetapi saya akan membahas beberapa yang terbesar.
-
Saat proses bercabang, induk dan anak akan ditampilkan dengan RSS yang sama. Namun linux menggunakan copy-on-write sehingga kedua proses tersebut benar-benar menggunakan memori yang sama. Hanya ketika salah satu proses memodifikasi memori, memori akan benar-benar diduplikasi.
Ini akan menyebabkanfree
nomor lebih kecil daritop
Jumlah RSS. -
Nilai RSS tidak termasuk memori bersama. Karena memori bersama tidak dimiliki oleh satu proses,
top
tidak menyertakannya dalam RSS.
Ini akan menyebabkanfree
nomor lebih besar daritop
Jumlah RSS.