Ini adalah pertanyaan kanonik tentang bagaimana sistem operasi Unix melaporkan penggunaan memori.
Pertanyaan serupa:
Saya memiliki server produksi yang menjalankan Debian 6.0.6 Squeeze
#uname -a
Linux debsrv 2.6.32-5-xen-amd64 #1 SMP Sun Sep 23 13:49:30 UTC 2012 x86_64 GNU/Linux
Setiap hari cron mengeksekusi skrip cadangan sebagai root:
#crontab -e
0 5 * * * /root/sites_backup.sh > /dev/null 2>&1
#nano /root/sites_backup.sh
#!/bin/bash
str=`date +%Y-%m-%d-%H-%M-%S`
tar pzcf /home/backups/sites/mysite-$str.tar.gz /var/sites/mysite/public_html/www
mysqldump -u mysite -pmypass mysite | gzip -9 > /home/backups/sites/mysite-$str.sql.gz
cd /home/backups/sites/
sha512sum mysite-$str* > /home/backups/sites/mysite-$str.tar.gz.DIGESTS
cd ~
Semuanya berfungsi dengan baik, tetapi saya perhatikan bahwa grafik memori Munin menunjukkan peningkatan cache dan buffer setelah cadangan.
Lalu saya hanya mengunduh file cadangan dan menghapusnya. Setelah penghapusan, grafik memori Munin mengembalikan cache dan buffer ke status sebelum backup.
Inilah grafik Munin:
Gambar yang dihosting secara eksternal adalah tautan mati.
linux
unix
memory-usage
Komunitas
sumber
sumber
Jawaban:
Ini adalah "masalah" yang sama seperti dari Server menolak untuk menggunakan partisi swap dan beberapa pertanyaan serupa lainnya di situs ini. ( Penggunaan Memori Tinggi di Server Linux , Penggunaan Memori di LINUX , Server Web Menjalankan Memori Rendah , dll.)
Perhatikan fakta bahwa konsumsi memori dari cache . Ini berarti menyimpan file dalam memori. Memori yang di-cache adalah memori "bebas". Alih-alih membiarkan blok memori kosong, OS Anda menyimpan file yang baru dibaca di ruang itu. Jika suatu aplikasi memang membutuhkan memori itu, itu akan digunakan oleh aplikasi tersebut. Sampai saat itu, ada kesempatan untuk menyelamatkan Anda dari keharusan membaca file dari disk lagi jika sering direferensikan.
Menurut grafik ini, konsumsi memori efektif Anda tidak berubah sama sekali selama durasi grafik.
sumber
sync; echo 3 > /proc/sys/vm/drop_caches
setelah cadangan?Anda mengalami masalah Linux Makan Ram Saya .
Jangan Panik.
Ini BUKAN masalah.
Sistem Anda Bekerja Sesuai Rancangan.
Masalahnya bukan OS Anda - masalahnya adalah pemahaman Anda tentang apa "bebas" memori itu.
Sistem Unix menggunakan memori untuk lebih dari sekedar menjalankan program. Memori dapat digunakan untuk:
Berikut ini adalah tur singkat (dan sebagian besar tidak lengkap) tentang bagaimana sistem Unix modern melaporkan penggunaan RAM.
Apa itu Memori bebas (definisi OS) ?
Ketika sistem Unix melaporkan RAM sebagai Gratis itu berarti "Saya tidak menggunakan RAM ini untuk apa pun".
Gratis RAM secara efektif berharga - Hal ini tidak membuat sistem anda lebih cepat, itu hanya duduk di sana menjadi "bebas" dalam kasus sesuatu membutuhkannya. Sesuatu itu bisa salah satu dari tiga item lain yang saya sebutkan di atas.
Apa itu memori Cache dan Buffer?
Memori cache dan Buffer adalah RAM yang digunakan sistem operasi untuk membuat sistem Anda lebih cepat.
Memori ini tidak diperlukan untuk menjalankan program sekarang , jadi OS Anda menggunakannya untuk menyimpan data yang sering dibutuhkan - misalnya pustaka C (dibutuhkan oleh hampir semua program yang Anda jalankan) hampir selalu tersimpan dalam
cache
memori, sehingga sistem tidak harus pergi ke disk untuk menemukan instruksi yang diperlukan untuk mencetak "Hello World" di layar.Ini sebenarnya jauh lebih rumit dari itu - ada memori bersama , memori kabel , dll - tetapi untuk tujuan kita penjelasan sederhana ini memadai.
Apa itu memori aktif?
Memori aktif adalah bagian dari yang kita pahami sebagai memori "bekas" - RAM yang digunakan aplikasi untuk apa pun yang mereka lakukan - mengurutkan spreadsheet, menyajikan halaman web, mengedit grafik, dll.
Memori "aktif" telah "aktif" baru-baru ini - - program yang mengklaim telah memanfaatkan isinya (membaca atau menulis), dan itu tidak dianggap sebagai kandidat yang baik untuk bertukar.
Apa itu memori tidak aktif?
Seperti memori Aktif, memori tidak aktif adalah RAM yang digunakan aplikasi untuk apa pun yang mereka lakukan. Perbedaannya adalah memori ini belum diakses dalam beberapa saat, jadi jika push datang untuk mendorong OS berpikir itu dapat ditukar dengan disk dan (dengan sedikit keberuntungan) program mengklaim tidak akan meminta lagi sehingga tidak akan pernah memperhatikan.
Apa itu memori "Bekas" (definisi MANUSIA)
Apa yang Anda dan saya anggap sebagai memori "Bekas" adalah, pada dasarnya, jumlah dari memori Aktif dan Tidak Aktif. Semua RAM saat ini diklaim oleh aplikasi untuk penggunaannya.
Selama Anda memiliki RAM yang diinstal lebih banyak daripada jumlah memori Aktif dan Tidak Aktif (ditambah margin keamanan yang bagus katakanlah 512-1024MB di atas) Anda berada di tempat yang tepat: OS Anda mungkin tidak akan memukul swap dan mematikan kinerja .
Apa itu memori "Gratis" (definisi MANUSIA) ?
Apa yang Anda dan saya anggap sebagai memori "bebas" adalah memori yang tersedia untuk menjalankan program.
Ini sedikit lebih rumit daripada hanya "Gratis" angka laporan OS Anda. Ketika sebuah program meminta RAM, sistem operasi akan mencoba mendapatkan RAM dengan cara yang paling tidak mengganggu:
(Ini adalah tentang di mana kinerja biasanya pergi ke anjing: Setiap kali program mendapat giliran pada CPU bit yang ditukar perlu dibawa kembali ke RAM, yang berarti beberapa memori aktif program lain harus ditukar - yang omset tinggi dalam swap disebut meronta - ronta )
malloc()
akan gagal. Ini adalah perilaku yang menyesuaikan POSIX - sistem operasi akan memberi tahu program yang meminta RAM bahwa ia tidak dapat memenuhi permintaan.Program dapat meminta lebih sedikit RAM, atau jika tidak dapat dilakukan dengan sepotong memori yang lebih kecil, program dapat membersihkan dan keluar. (Jika program ditulis dengan buruk, itu hanya akan crash.)
Jika Anda tidak dapat memberi tahu uraian saya di sini dan jawaban saya pada pertanyaan terkait, saya pikir ini adalah cara yang mengerikan untuk menangani masalah tersebut.
Mengapa RAM Gratis naik ketika Anda menghapus file?
Dalam contoh dari pertanyaan di sini Anda perhatikan bahwa dimungkinkan untuk "Membebaskan" RAM dengan menghapus file cadangan - penjelasan untuk itu cukup sederhana: Karena tidak ada yang menggunakan file itu (tidak ada pegangan file terbuka) dan tidak lagi dapat diakses dari filesystem (tidak terhubung) OS tahu tidak ada yang akan pernah mengakses data itu lagi, dan itu membersihkan data dari cache filesystem.
Ini membuat OS melaporkan lebih banyak memori bebas, tetapi tidak berdampak pada kinerja sistem.
sumber
top
dan melaporkan RAM Bebas / Berkabel / Aktif / Tidak Aktif.Hal lain yang perlu diperiksa jika di atas gagal:
Dari: https://stackoverflow.com/a/5467207
sumber