Apa perbedaan antara laporan penggunaan memori di Monitor Sistem dan yang gratis?

14

Saya menggunakan Monitor Sistem 2.28.0. Ketika saya melihat di tab Resources, saya melihat grafik yang bagus dengan memori dan swap. Memori sekitar 60% 2,3 GiB 3,8. Ketika saya mengetikkan perintah gratis, saya mendapat:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

cat / proc / meminfo | grep, beri MemFree

MemFree:           34536 kB

Situasi tetap menyimpan selama beberapa menit. Saya memulai banyak proses dengan skrip dan skrip sedang menunggu memori bebas menjadi lebih rendah. Menurut apa yang saya lihat di tab Proses (atau dengan bagian atas), angka di Monitor Sistem tampak sangat tertutup dengan total memori proses yang dilaporkan bebas.

Terima kasih

Guillaume Coté
sumber

Jawaban:

15

Perbedaannya adalah apakah memori "buffer" dan "cache" termasuk dalam hitungan "bekas".

Secara umum, memori sistem Linux digunakan oleh kernel untuk dua tujuan: proses dan cache file / jaringan. Jika Anda melihat dari dekat free, itu sudah ditampilkan:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

Jika Anda menambahkan "buffer" dan "cache", lalu kurangi dari kolom "bekas", Anda akan mendapatkan baris kedua di bawah "bekas" (baris yang dimulai dengan -/+ buffers/cache), yang menunjukkan sekitar 2,3G (2384512) di gunakan, yang cocok dengan memori yang dilaporkan yang digunakan yang dilaporkan oleh System Monitor (ini mengabaikan buffer / cache karena itu akan hilang untuk memberi ruang bagi lebih banyak proses).

Grep Anda terhadap /proc/meminfobenar - benar cocok dengan kolom "bebas" baris pertama (32512 cukup dekat dengan 34536 - kemungkinan berubah antara dua output perintah).

Kees Cook
sumber
Terima kasih, saya bertanya-tanya mengapa sistem membutuhkan 1,5 Gig dalam cache, tetapi itu membuatnya jelas.
Guillaume Coté
1
Ini bukan masalah "kebutuhan" daripada "digunakan". Pada saat itu, ia membaca setidaknya dari hard drive, dan menyimpannya dalam memori cadangan jika perlu menggunakannya lagi.
Kees Cook
0

Ketika saya mendapatkan monitor sistem, penggunaan memori yang dilaporkan di tab "Resources" sama dengan free kolom di /usr/bin/free.

Masalahnya adalah bahwa memori fisik gratis hampir 0, cepat atau lambat: Linux cache secara agresif sehingga uang yang Anda habiskan untuk membeli RAM digunakan secara efisien. Dan ini berarti grafik akan terus menunjukkan> 98% penggunaan memori, yang tidak berguna.

Jadi saya / kami memutuskan untuk melakukan seperti -/+ buffers/cache:garis /usr/bin/free. Dengan cara ini, grafik bermakna dan membiarkan pengguna menonton ~ application / userland penggunaan memori alih-alih keadaan fisik memori.

Saya tahu, ini agak menyesatkan, karena sebagian besar (l) pengguna tidak mengerti bahwa memori fisik gratis adalah pemborosan uang dan kinerja. Saya menghadapi masalah yang sama di tempat kerja: pada setiap hari Senin, server akan reboot, dan dalam 24 jam berikutnya, setiap server akan memicu peringatan "memori penuh". Jadi saya memiliki perhitungan memori bebas yang diperbaiki dalam perangkat lunak pengawasan seperti pada monitor sistem.

Solaris saat ini memiliki masalah yang sama: ZFS Cache (ARC) tidak termasuk dalam memori bebas yang dilaporkan oleh alat seperti vmstatyang membuat admin DB bodoh mengeluh bahwa "ZFS buruk" :)

Benoît
sumber