free
menarik datanya dari /proc/meminfo
slkwr133701:/usr/src/linux # free
total used free shared buffers cached
Mem: 2053456 434572 1618884 0 77888 201820
slkwr133701:/usr/src/linux # cat /proc/meminfo
MemTotal: 2053456 kB
MemFree: 1618736 kB
Buffers: 77928 kB
....
Ini mengacu pada memori yang digunakan untuk penyimpanan blok I/O sementara. Kernel harus menetapkan dan membebaskan unit ukuran yang sama secara terus-menerus seperti transfer blok I/O, paket jaringan, dan buffer soket
Anda dapat melihat cache dan alokasi buffer dengan lebih baik dengan menjalankan slabtop
Menanggapi pertanyaan penggunaan Anda:Sistem biasanya akan mengalokasikan lebih banyak blok daripada yang dibutuhkan, tetapi saat "tekanan memori" meningkat, blok tambahan ini akan dilepaskan.
"buffer" dapat diklaim ulang di bawah tekanan memori. Jadi ini mirip dengan cache halaman (kolom "cache"); bukan alasan besar untuk khawatir. Nilai "buffer" bisa kecil atau besar, tergantung apa yang dilakukan sistem Anda :-). Kami dapat menemukan beberapa jenis cache yang dihitung di sini.
Cache buffer secara harfiah adalah cache halaman untuk perangkat blok. Linux hanya melaporkan ini secara terpisah.[*] Anda dapat melihat penggunaan "buffer" saat program membaca/menulis simpul perangkat blok, mis. dd status=progress if=/dev/sda of=/dev/null
. Tampaknya orang-orang juga menyadarinya saat menjalankan program pemutar DVD.
Buktinya, lihat:30% dari RAM adalah "buffer". Apa itu?
Jika Anda belum mengakses node blok perangkat, "buffer" Anda mungkin semuanya metadata sistem file . Sistem file menggunakan cache buffer secara internal sebagai kenyamanan. Mereka memastikan tidak pernah menggandakan file data - isi file - yang disimpan di cache halaman utama. Persisnya untuk apa sistem file menggunakan cache buffer - jika ada - bervariasi tergantung pada sistem file.
Pada mesin dengan jumlah RAM fisik yang kecil, saya perhatikan "buffer" dapat terlihat tinggi, ketika saya memiliki sistem file ext3/ext4. Ini karena menulis ke jurnal melewati buffer cache. (Lihat tautan di atas). sistem file ext3/4 juga menyimpan konten direktori dalam cache buffer.
Kedua, "buffer" ditunjukkan oleh free
perintah juga termasuk SReclaimable, artinya lempengan yang dapat diklaim ulang. (Demonstrasikan di sini:Cara yang Tepat untuk Memantau Memori Linux, Lagi).
Memori slab tidak bagian dari cache halaman/buffer. Namun akan lebih mudah untuk menghitungnya bersama-sama. Keduanya dapat diklaim ulang, dan penggunaan utama (hanya?) dari lempengan yang dapat diklaim ulang adalah untuk caching sistem file. Misalnya metadata file (inode) dan pencarian jalur (dentry's) di-cache di slab yang dapat diklaim ulang. "Memori slab yang dapat diklaim ulang [dapat] menggunakan sebagian besar memori sistem pada sebagian besar sistem yang menganggur dengan banyak file."
Anda dapat melihat Buffers
mentah dan SReclaimable
nilai dalam cat /proc/meminfo
. Anda juga dapat menjalankan slabtop
untuk melihat daftar slab. AFAICT, slabtop
tidak memberikan statistik pada lempengan sebagai dapat diklaim ulang atau tidak. Tapi biasanya Anda bisa menebak, dan jika ada lempengan yang mencurigakan, saya kira Anda bisa mencarinya berdasarkan namanya.
[*] Untuk keperluan jawaban ini, "buffer cache" adalah cache yang dihitung dengan Buffers
di /proc/meminfo
. Namun sumber lain mungkin merujuk ke seluruh cache halaman sebagai cache buffer terpadu. Jika Anda menginginkan penjelasan sejarah, lihat tautan pertama.
Pengembang Linux juga mungkin menggunakan "buffer cache" untuk mengartikan hal yang berbeda, saat mereka bertengkar tentang implementasi sistem file.