Arti dari garis buffer / cache dalam output gratis

168

Mengapa server saya ditampilkan

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

Saya tidak tahu cara menghitung memori di linux. Saya pikir itu mengatakan bahwa 5088232 digunakan di mana 7198224 adalah gratis, yang berarti itu sebenarnya mengkonsumsi 5GB RAM?

Muahmmad Zeeshan
sumber

Jawaban:

232

Arti dari nilai-nilai

Baris pertama berarti:

  • total: Total (fisik) RAM Anda (tidak termasuk sedikit yang disediakan kernel secara permanen saat startup); itu sebabnya ini menunjukkan ca. 11,7 GiB, dan bukan 12 GiB, yang mungkin Anda miliki.
  • used: memori digunakan oleh OS.
  • free: memori tidak digunakan.

total= used+free

  • shared/ buffers/ cached: Ini menunjukkan penggunaan memori untuk tujuan tertentu, nilai-nilai ini termasuk dalam nilai untuk used.

Baris kedua memberikan nilai garis pertama disesuaikan. Ini memberikan nilai asli untuk used minus jumlah buffers+cacheddan nilai asli untuk free ditambah jumlah buffers+cached, maka judulnya. Nilai-nilai baru ini seringkali lebih bermakna daripada nilai dari baris pertama.

Baris terakhir ( Swap:) memberikan informasi tentang penggunaan ruang swap (yaitu konten memori yang telah dipindahkan sementara ke disk).

Latar Belakang

Untuk benar-benar memahami apa arti angka-angka itu, Anda perlu sedikit latar belakang tentang subsistem memori virtual (VM) di Linux. Versi singkatnya: Linux (seperti kebanyakan OS modern) akan selalu mencoba menggunakan RAM gratis untuk caching, jadi Mem: freehampir selalu sangat rendah. Oleh karena itu baris -/+ buffers/cache:ditampilkan, karena itu menunjukkan berapa banyak memori yang bebas ketika mengabaikan cache; cache akan dibebaskan secara otomatis jika memori menjadi langka, jadi itu tidak terlalu penting.

Sistem Linux benar-benar kehabisan memori jika freenilainya -/+ buffers/cache:sejalan.

Untuk detail lebih lanjut tentang arti angka, lihat misalnya pertanyaan:

Perubahan dalam proksi 3.3.10

Perhatikan bahwa output freediubah dalam procps 3.3.10 (dirilis pada 2014). Kolom yang dilaporkan sekarang "total", "digunakan", "gratis", "dibagikan", "buff / cache", "tersedia" , dan arti beberapa nilai berubah, terutama untuk akun yang lebih baik untuk slab kernel Linux cache.

Lihat laporan Bug Debian # 565518 untuk motivasi, dan Apa arti perubahan dalam freeoutput dari 14,04 menjadi 16,04? untuk informasi lebih lanjut.

sleske
sumber
Bisakah Anda memperluas hal-hal seperti apa yang Linux caching? Apakah itu file yang telah diakses atau hal-hal jaringan?
CMCDragonkai
@CMCDragonkai: Jawaban untuk serverfault.com/questions/23433/... membahas secara terperinci apa yang termasuk dalam "cache" dan "buffer".
sleske
5
Saya tidak berpikir pernyataan "total = bekas + gratis" benar, lihat output berikut pada mesin saya:$ free -h total used free shared buff/cache available Mem: 3.4G 585M 152M 11M 2.6G 2.5G Swap: 4.0G 84M 3.9G
Sebastian
@ Sebastian: Ah, menarik. Tampaknya ouput gratis diubah (dalam 3.3.10). Saya mengedit jawaban saya untuk menyebutkan ini. Jika Anda tertarik dengan perubahan ini, pertimbangkan untuk mengajukan pertanyaan baru :-).
sleske
3
total = used + free + buff/cache
hazard89
2

Baris buffer / cache menunjukkan Anda berapa banyak memori yang digunakan oleh program (pertama dari kolom-kolom itu), dan bebas untuk digunakan oleh program (kolom kedua). Itu angka yang cukup esoteris, dan bukan sesuatu yang benar-benar akan Anda lihat dalam praktiknya.

womble
sumber
Dan apa arti garis pertama (garis mem) artinya
Muahmmad Zeeshan
8
Bahwa Anda memiliki 12GB RAM yang diinstal dalam sistem, 11,5GB yang digunakan dan 0,5GB saat ini tidak digunakan. Kira-kira 82MB memori yang digunakan digunakan untuk buffer (koneksi jaringan, dll), sementara sekitar 6,5GB digunakan untuk menyimpan salinan data pada disk, sehingga data tidak perlu dibaca kembali jika diperlukan lagi.
womble
3
@Muhammad: "82MB gratis." - tidak, 57MiB gratis (tapi itu tidak masalah, lihat jawaban saya). "Sekarang ini semua berarti bahwa sistem telah mencapai batasnya" - Tidak, tidak sama sekali. Sistem ini memiliki 6.9GiB digunakan untuk caching, yang siap untuk aplikasi, jadi ada banyak ruang. Juga, penggunaan swap sangat rendah (hanya sekitar 50MiB). Jika memori mulai kencang, penggunaan swap akan meningkat. Saat ini Anda hampir tidak menggunakan setengah dari RAM yang Anda miliki.
sleske
4
Sudahkah Anda mempertimbangkan untuk mengajukan pertanyaan baru?
womble
3
Saya tidak setuju, garis buffer / cache adalah memori bebas aktual dari sistem dan oleh karena itu paling relevan jika Anda ingin tahu apakah sistem memiliki ruang untuk program.
eckes