GNU/Linux >> Belajar Linux >  >> Linux

Linux – Menentukan Penggunaan Memori dengan Benar di Linux?

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 menyebabkan free nomor lebih kecil dari top Jumlah RSS.

  • Nilai RSS tidak termasuk memori bersama. Karena memori bersama tidak dimiliki oleh satu proses, top tidak menyertakannya dalam RSS.
    Ini akan menyebabkan free nomor lebih besar dari top Jumlah RSS.


Linux
  1. Penggunaan Memori Linux

  2. Cara Menghitung Penggunaan Memori di Linux menggunakan sar, ps, dan gratis

  3. Bagaimana cara mencatat konsumsi memori di Linux?

  1. Linux – Batasi Penggunaan Memori Untuk Proses Linux Tunggal?

  2. Linux – Penggunaan Memori Nyata?

  3. Perintah Gratis di Linux Dijelaskan Dengan Contoh

  1. Menentukan penggunaan disk di Linux menggunakan perintah "du"

  2. membatasi penggunaan memori di R di bawah linux

  3. Bagaimana penggunaan memori dilaporkan di Linux?