Saya telah meluncurkan sesuatu yang menghabiskan banyak memori dan sekarang semuanya sangat terlambat. Saya kira memori semua aplikasi telah beralih untuk mengosongkan beberapa ruang untuk proses intensif-memori, dan sekarang semuanya perlahan-lahan kembali ke RAM ketika diakses.
Apakah ada cara untuk secara eksplisit memindahkan segala yang mungkin dari menukar kembali ke RAM? Atau mungkin tidak semuanya, tetapi hanya beberapa proses data tertentu?
swapoff
jika memori hampir habis: dalam hal ini, ruang swap akan tetap berfungsi :)Anda dapat menyetelnya menggemakan beberapa angka antara 0 hingga 100 menjadi
/proc/sys/vm/swappiness
.sumber
sysctl
perintah sebagai gantinya. Dalam hal ini, yasysctl vm.swappiness=x
.sysctl
perintah tingkat tinggi untuk interaksi pengguna. Hasil akhirnya adalah sama, tetapi biasanya antarmuka tingkat yang lebih tinggi lebih disukai bagi pengguna untuk berinteraksi secara langsung. Agak suka menghidupkan mesin dengan hubungan arus pendek kabel pengapian (level bawah) alih-alih hanya memutar kunci (level lebih tinggi).Linux melakukan pekerjaan yang baik dalam mengelola memori dan Anda seharusnya tidak menghalangi jalannya. Pengaturan vm.swappiness (disebutkan sebelumnya) tidak menghalangi. Anda lebih mungkin mengalami masalah aneh melakukan hal-hal dengan cara lain.
Apa yang Anda luncurkan yang begitu haus akan ingatan? Bisakah itu disetel? Jika tidak memiliki arahan batas memori sendiri, Anda dapat melihat ulimit juga.
sumber
convert -density 200 file.pdf jpegs/file.jpg
. Untuk beberapa alasan ia menggunakan banyak memori, tetapi Anda benar: itu dapat disetel. Pokoknya, situasinya mungkin dengan aplikasi apa pun :)convert
memiliki-limit
argumen untuk mengontrol penggunaan memori vs. penggunaan disk, dan Anda harus membacanya. Pengaturan-limit memory 512MB
atau sejenisnya akan baik. Mungkin juga baik untuk menentukan MAGICK_TEMPORARY_PATH eksplisit dan membersihkannya setelah perintah Anda selesai.Jika Anda memiliki memori yang tersedia untuk semua aplikasi Anda, tidak apa-apa untuk mengatur swappiness ke 0 sehingga hal-hal tidak akan swap keluar. Sebagai contoh, qemu-kvm adalah target besar VMM untuk ditukar, karena "tampaknya" hampir tidak digunakan sepanjang waktu. Saya telah melihat hingga 80% dari memori memori qemu-kvm ditulis untuk swap. VM yang berjalan di qemu-kvm akan menjadi hampir tidak responsif karena mereka kehabisan swap (meskipun tamu tidak tahu ini sedang terjadi). VM tamu akan berpikir itu berkinerja paling baik, meskipun sebenarnya sangat menyeret. Ketika saya sekelompok VM "bangun" dan mulai melakukan hal-hal, itu dapat melonjak rata-rata beban hingga lebih dari 30, bahkan pada perangkat keras kelas perusahaan dengan memori dan disk yang cukup cepat. Saya kira ini adalah kegagalan dalam desain qemu-kvm out-of-the-box.
Semoga ini bisa membantu seseorang.
sumber
Saya akan menyarankan untuk tidak memikirkan VM subsistem dalam kernel. Sangat tidak mungkin bahwa Anda benar-benar memiliki informasi yang cukup untuk membuat keputusan yang lebih baik daripada yang seharusnya. Dan jika Anda memaksanya untuk melakukan hal yang salah, maka Anda hanya akan membuat segalanya lebih lambat.
sumber
Jika Anda dapat mem-boot ulang sistem yang seharusnya melakukannya (dan mungkin membutuhkan waktu jauh lebih sedikit daripada mencoba solusi lain).
sumber
Untuk menyalin jawaban saya dari pertanyaan ini .
Agar Anda tahu bagaimana swappiness merdu bekerja. Ini berfungsi dengan memberi tahu subsistem VM untuk mencari halaman yang akan ditukar ketika% memori dipetakan untuk memproses tabel halaman + nilai swappiness> 100. Jadi pengaturan 60 akan menyebabkan sistem mulai membuka halaman basi dari tabel halaman proses ketika menggunakan lebih dari 40% memori sistem Anda. Jika Anda ingin mengizinkan program Anda menggunakan lebih banyak memori dengan mengorbankan cache Anda ingin menurunkan nilai swappiness.
sumber
Apakah prosesnya masih berjalan? Buka terminal dan lihat apakah Anda dapat melihat proses yang diluncurkan. (ps aux | grep processname mungkin membuatnya sedikit lebih mudah) Gunakan kill -9 PID untuk mematikannya jika masih berjalan. Berhati-hatilah dengan apa yang Anda bunuh. Jika Anda tidak tahu apa prosesnya, jangan bunuh itu! Juga, posting output -m gratis sehingga kita dapat melihat apakah Anda benar-benar masih menggunakan banyak swap.
Jika semuanya masih berjalan lambat, Anda mungkin masih memiliki apa pun yang Anda jalankan masih berjalan. Saya tidak akan pernah mematikan swap kecuali Anda benar-benar tahu apa yang Anda lakukan atau Anda suka hidup di tepi. =)
sumber
Saya percaya bahwa tidak ada cara yang benar-benar baik untuk memaksa Linux melepaskan data dari disk ke memori. Ketika swapoff / swapon adalah solusi yang berfungsi, tetapi itu kotor dan mudah dapat membuat sistem Anda tidak stabil. Untuk kasus-kasus ketika Anda memiliki lebih banyak data dalam swap daripada memori bebas, akan sulit untuk membayangkan kebijakan efisien apa pun yang dapat diterapkan oleh Linux untuk memutuskan data mana yang akan dipindahkan ke memori dan data apa yang disimpan dalam disk.
Rangkuman: Biarkan Linux secara bertahap mengembalikan kinerjanya dengan cara normal. Subsistem VM-nya diatur sedemikian rupa sehingga berusaha dan terus-menerus pindah ke kondisi seimbang yang ideal.
sumber
Mengosongkan cache buffer
Jika Anda ingin mengosongkannya, Anda dapat menggunakan rantai perintah ini.
Anda dapat memberi sinyal Kernel Linux untuk menjatuhkan berbagai aspek dari item yang di-cache dengan mengubah argumen numerik ke perintah di atas.
CATATAN: bersihkan memori dari hal-hal yang tidak perlu (Kernel 2.6.16 atau yang lebih baru). Selalu pastikan untuk menjalankan sinkronisasi terlebih dahulu untuk membersihkan hal-hal berguna ke disk !!!
Untuk membebaskan pagecache:
Untuk membebaskan gigi dan inode:
Untuk membebaskan pagecache, gigi palsu, dan inode:
Di atas dimaksudkan untuk dijalankan sebagai root. Jika Anda mencoba melakukannya menggunakan sudo maka Anda perlu sedikit mengubah sintaks menjadi seperti ini:
sumber