Bagi saya tidak jelas apa perbedaan antara dua konsep memori Linux: buffer
dan cache
. Saya telah membaca posting ini dan bagi saya perbedaan antara keduanya adalah kebijakan kedaluwarsa:
- kebijakan buffer adalah masuk pertama, keluar pertama
- kebijakan cache adalah yang terakhir digunakan.
Apakah saya benar?
Secara khusus, saya melihat dua perintah: free
danvmstat
james@utopia:~$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
5 0 0 173 67 912 0 0 19 59 75 1087 24 4 71 1
james@utopia:~$ free -m
total used free shared buffers cached
Mem: 2007 1834 172 0 67 914
-/+ buffers/cache: 853 1153
Swap: 2859 0 2859
free
output perintah?Jawaban:
"Buffer" menunjukkan seberapa banyak porsi RAM yang didedikasikan untuk cache disk. "Cached" mirip seperti "Buffer", hanya saja kali ini cache halaman dari pembacaan file.
kutipan dari:
sumber
cache
diisi seperti yang dilaporkan olehfree -w -h
, bukanbuffers
kolom. Saya pikircache
kolom menghitung menulis disk dan membaca disk danbuffers
digunakan untuk sesuatu yang lain.tautan kutipan
sumber
Jawaban yang dikutip (untuk referensi):
sumber
Ini tidak sesederhana ini, tetapi mungkin membantu memahami:
Buffer adalah untuk menyimpan metadata file (izin, lokasi, dll). Setiap halaman memori disimpan di sini.
Cache adalah untuk menyimpan konten file yang sebenarnya.
sumber
Dijelaskan oleh RedHat :
Halaman Cache:
Cache adalah bagian dari memori yang secara transparan menyimpan data sehingga permintaan di masa mendatang untuk data tersebut dapat dilayani lebih cepat. Memori ini digunakan oleh kernel untuk menyimpan data disk dan meningkatkan kinerja i / o.
Kernel Linux dibangun sedemikian rupa sehingga akan menggunakan RAM sebanyak mungkin untuk menyimpan informasi dari sistem file dan disk lokal dan jarak jauh Anda. Ketika waktu melewati berbagai pembacaan dan penulisan dilakukan pada sistem, kernel mencoba untuk menyimpan data yang tersimpan dalam memori untuk berbagai proses yang berjalan pada sistem atau data dari proses yang relevan yang akan digunakan dalam waktu dekat. Cache tidak direklamasi pada saat proses berhenti / keluar, namun ketika proses lain membutuhkan lebih banyak memori daripada memori yang tersedia, kernel akan menjalankan heuristik untuk mendapatkan kembali memori dengan menyimpan data cache dan mengalokasikan memori itu ke proses baru.
Ketika segala jenis file / data diminta maka kernel akan mencari salinan bagian dari file yang digunakan oleh pengguna, dan, jika tidak ada salinan seperti itu, itu akan mengalokasikan satu halaman baru dari memori cache dan mengisinya dengan isi yang sesuai dibacakan dari disk.
Data yang disimpan dalam cache mungkin nilai yang telah dihitung sebelumnya atau duplikat dari nilai asli yang disimpan di tempat lain di disk. Ketika beberapa data diminta, cache pertama kali diperiksa untuk melihat apakah itu berisi data itu. Data dapat diambil lebih cepat dari cache daripada dari sumbernya.
Segmen memori bersama SysV juga dicatat sebagai cache, meskipun mereka tidak mewakili data apa pun pada disk. Satu dapat memeriksa ukuran segmen memori bersama menggunakan perintah ipcs -m dan memeriksa kolom byte.
Buffer:
Buffer adalah representasi blok disk dari data yang disimpan di bawah cache halaman. Buffer berisi metadata dari file / data yang berada di bawah cache halaman. Contoh: Ketika ada permintaan data apa pun yang ada di halaman cache, pertama kernel memeriksa data dalam buffer yang berisi metadata yang menunjuk ke file / data aktual yang terkandung dalam cache halaman. Setelah dari metadata alamat blok aktual dari file diketahui, itu diambil oleh kernel untuk diproses.
sumber
buffer dan cache.
Buffer adalah sesuatu yang belum "ditulis" ke disk.
Cache adalah sesuatu yang telah "dibaca" dari disk dan disimpan untuk digunakan nanti.
sumber
Saya pikir halaman ini akan membantu memahami perbedaan antara buffer dan cache secara mendalam. http://www.tldp.org/LDP/sag/html/buffer-cache.html
Membaca dari disk sangat lambat dibandingkan dengan mengakses memori (nyata). Selain itu, biasanya membaca bagian disk yang sama beberapa kali selama periode waktu yang relatif singkat. Misalnya, seseorang mungkin pertama-tama membaca pesan email, kemudian membaca surat itu menjadi editor ketika membalasnya, kemudian membuat program surat membacanya lagi ketika menyalinnya ke folder. Atau, pertimbangkan seberapa sering perintah
ls
dapat dijalankan pada sistem dengan banyak pengguna. Dengan membaca informasi dari disk hanya sekali dan kemudian menyimpannya dalam memori sampai tidak lagi diperlukan, orang dapat mempercepat semua kecuali membaca pertama. Ini disebut buffering disk, dan memori yang digunakan untuk tujuan tersebut disebut buffer cache.Karena memori, sayangnya, sumber daya terbatas, tidak, langka, cache buffer biasanya tidak cukup besar (tidak dapat menampung semua data yang ingin digunakan). Ketika cache terisi, data yang telah lama tidak digunakan dibuang dan memori yang dibebaskan digunakan untuk data baru.
Disk buffering juga berfungsi untuk menulis. Di satu sisi, data yang ditulis sering segera dibaca lagi (misalnya, file kode sumber disimpan ke file, kemudian dibaca oleh kompiler), jadi menempatkan data yang ditulis dalam cache adalah ide yang bagus. Di sisi lain, dengan hanya memasukkan data ke dalam cache, tidak menulisnya ke disk sekaligus, program yang menulis berjalan lebih cepat. Penulisan kemudian dapat dilakukan di latar belakang, tanpa memperlambat program lain.
sumber
Seth Robertson Link 2 mengatakan, "Untuk memahami istilah-istilah tersebut, lihat buku kernel Linux seperti Linux Kernel Development oleh Robert M. Love."
Saya menemukan beberapa konten tentang 'buffer' di buku edisi ke-2.
sumber
Buffer berisi metadata yang membantu meningkatkan kinerja penulisan
Cache berisi konten file itu sendiri (kadang-kadang belum menulis ke disk) yang meningkatkan kinerja membaca
sumber
Kutipan dari buku: Pengantar Pengambilan Informasi
Cache
Penyangga
sumber
Buffer adalah wilayah memori yang digunakan untuk menyimpan sementara data saat sedang dipindahkan dari satu tempat ke tempat lain di dalam komputer. Sementara cache adalah area penyimpanan sementara tempat data yang sering diakses dapat disimpan untuk akses cepat. Setelah data disimpan dalam cache, penggunaan di masa mendatang dapat dilakukan dengan mengakses salinan yang di-cache daripada mengambil kembali data asli, sehingga waktu akses rata-rata lebih pendek.
sumber