Apa yang "di-cache" di perintah atas?

46

Saat berlari top, saya mendapatkan:

top - 09:10:52 up 18:37,  1 user,  load average: 1.56, 1.33, 1.15
Tasks:  39 total,   1 running,  38 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.6%sy,  1.0%ni, 92.5%id,  5.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4194304k total,  3045460k used,  1148844k free,        0k buffers
Swap:        0k total,        0k used,        0k free,  2256128k cached

Lihat bagiannya: 2256128k di-cache? Apa sebenarnya artinya itu?

Saya membandingkan dua VPS dari dua penyedia, yang satu ini selalu memiliki jumlah yang besar di sana (70% dari memori yang digunakan) dan penyedia VPS lainnya selalu menunjukkan 0.

KKK
sumber

Jawaban:

15

Jumlah itu sebelum di-cache adalah jumlah memori fisik yang digunakan oleh buffer cache untuk sistem file Anda.

Ini sebenarnya tidak terkait dengan SWAP, meskipun berada di baris "Tukar:".

Untuk memverifikasi jawaban saya dengan sedikit percobaan, coba yang berikut ini:

Jalankan atas dan perhatikan nilai 'cache'. Sekarang jalankan

dd if=/dev/zero of=~/trick bs=1M count=128

jika Anda menjalankan teratas lagi Anda akan melihat bahwa 'cache' telah tumbuh sebesar 128 juta

Sekarang hapus file tersebut

rm ~/trick

Jalankan lagi dan Anda akan melihat 'cache' telah turun 128M

Jadi untuk Mem:

total = used + free dan

used = <all apps> + buffers + cached

(di mana buffer pada dasarnya adalah metadata untuk cache). Agak membingungkan UI.

rogerdpack
sumber
dan saya dapat memengaruhi ini, mis. batasi atau nonaktifkan sepenuhnya?
KKK
2
Kenapa kamu mau melakukan itu ?! apa yang akan kamu lakukan ?! ini tentang bagaimana cache sistem file dalam memori phyiscal.
Karena sebagian besar filesystem adalah DB, DB memiliki cache sendiri, jadi saya berasumsi akan baik untuk membatasi bagian ini entah bagaimana.
KKK
Anda dapat melakukannya dengan beberapa pencarian tetapi saya tidak menyarankan Anda. Ini akan membatasi kinerja FS
117

kernel Linux akan menggunakan memori yang tersedia untuk cache disk, kecuali jika itu diperlukan oleh program yang sedang berjalan.

Ini dianggap baik; mengatakan Anda memiliki RAM 4 GB, dan program Anda hanya menggunakan 1 GB. 3 GB lainnya akan sia-sia. Terlepas dari kesan "senang-senang" dari mengetahui Anda hanya menggunakan 25% dari memori Anda, lawannya adalah 75% lainnya tidak digunakan. Jadi kernel menggunakannya untuk menyimpan file yang secara signifikan meningkatkan kinerja. Ini otomatis; tidak seperti sistem operasi yang lebih lama Anda tidak perlu memutuskan berapa banyak yang akan dicurahkan ke cache disk, atau mengkonfigurasinya secara manual.

"Cache disk Linux sangat tidak mengganggu. Menggunakan memori cadangan untuk sangat meningkatkan kecepatan akses disk, dan tanpa mengambil memori dari aplikasi. Penyimpanan ram yang digunakan sepenuhnya pada Linux adalah penggunaan perangkat keras yang efisien, bukan tanda peringatan."

Ini adalah pertanyaan umum sehingga ada seluruh situs web yang ditujukan untuknya:

http://www.linuxatemyram.com

Situs web bahkan memiliki cara untuk mengosongkan cache disk sehingga Anda kemudian dapat menjalankan beberapa aplikasi dan melihat seberapa cepat mereka dengan cache diaktifkan :)

roadmr
sumber
4
Saya suka jawabannya, tetapi karena kurangnya reputasi saya belum bisa memutakhirkannya. Maaf.
KKK
4
Jangan khawatir, saya senang bisa membantu. Semoga informasinya bermanfaat!
roadmr
INI harus menjadi jawaban yang diterima. Baiklah . . . :(
ankush981
pasti harus menjadi jawaban yang diterima. linuxatemyram adalah info hebat!
rafaelbattesti