GNU/Linux >> Belajar Linux >  >> Linux

I/O disk OOM Linux. Juga:tukar, apa gunanya?

Pertanyaan sebenarnya adalah, mengapa Anda menjalankan tanpa swap? Terutama jika Anda melihat masalah kinerja (serius) terkait kehabisan RAM? Anda tahu tidak memiliki swap sebenarnya dapat membuat sistem Anda lebih lambat, bukan?

Solusi yang jelas adalah menambahkan beberapa ruang swap, dan tidak membuat sistem Anda berantakan. Mempertimbangkan betapa murahnya ruang disk, saya tidak dapat memikirkan situasi umum di mana Anda harus pernah membangun sistem tanpa swap.

Untuk menjawab pertanyaan Anda, saya tidak ingat semua detail tingkat rendah tentang mengapa swap penting bahkan pada sistem di mana Anda tidak akan menghabiskan memori, tetapi ada argumen di milis Kernel Linux tentang apakah masuk akal untuk menjalankan sistem tanpa swap (dan belum ada banyak jawaban konklusif). Konsensus umumnya adalah untuk selalu menukar , dan sesuaikan swapiness sesuai kebutuhan.

Juga, saya pikir Anda salah paham tentang beberapa peringatan penting tentang pembunuh OOM Linux. Pertama-tama, mengandalkannya untuk menangani masalah Kehabisan Memori Anda adalah Ide yang Sangat Buruk (tm). Ini bisa sangat tidak pandang bulu tentang apa yang dibunuhnya, dan sangat mungkin Anda akan ditinggalkan dengan sistem yang tidak stabil atau bahkan tidak dapat digunakan. Ya, itu mencoba untuk mematikan proses baru-baru ini yang memakan banyak memori (pengaman kecil untuk mencoba menangkap proses yang kabur), tetapi tidak ada jaminan. Saya pernah melihatnya mematikan ssh, mematikan proses Xen (di server host virtual Xen, menyebabkan VM mogok), dan dalam satu kasus mematikan NFS.

Sedangkan untuk IO. . . Saya tidak tahu pasti apa yang menyebabkannya. Mungkin sistem file atau proses terkait disk terbunuh? Mungkin suatu proses memiliki semacam fungsi "cache ke disk" bawaan ketika tidak dapat mengalokasikan cukup memori?

Catatan lain, jika ini adalah desktop, swap diperlukan untuk Suspend to Disk. Jika itu server, mengandalkan OOM tidak pernah ide yang bagus, karena membahayakan stabilitas karena, yah, tidak ada alasan yang bagus sama sekali.

[1] Sistem tersemat adalah satu-satunya pengecualian yang jelas, dan mereka tidak terlalu umum (dan jika Anda berurusan dengan sistem tersemat, Anda sudah mengetahui persyaratannya).


Saya pikir AndreasM telah memukulnya di kepala (alasan untuk disk menjadi semua thrashy.) Executable adalah halaman permintaan - jadi dalam operasi normal Anda akan memiliki hampir semua perpustakaan nad executable Anda duduk di RAM fisik yang baik. Tetapi ketika RAM hampir habis, tetapi tidak cukup rendah untuk menjalankan pembunuh kehabisan memori, halaman-halaman ini dikeluarkan dari RAM. Jadi Anda berakhir dengan situasi di mana halaman dikeluarkan - pada awalnya, tidak masalah, karena halaman tersebut dikeluarkan paling sedikit digunakan terlebih dahulu dan itu akan mengeluarkan halaman yang tidak Anda gunakan. Tapi kemudian, itu mengeluarkan yang Anda adalah menggunakan, hanya untuk harus mengembalikannya beberapa saat kemudian. Kota sampah.

Pada dasarnya, jika sesuatu menggunakan sedikit lebih banyak RAM, Anda mungkin akan memiliki pembunuh OOM masuk tetapi Anda belum sampai di sana. Seperti yang dikatakan beberapa orang, pembunuh OOM tidak pandang bulu, ini lebih merupakan upaya terakhir untuk menghindari kepanikan kernel daripada sesuatu yang harus Anda pertimbangkan untuk digunakan dalam operasi normal. Jika Anda memiliki beberapa penyiapan khusus, saya akan mempertimbangkan untuk menulis beberapa daemon untuk memantau memori bebas, dan mematikan menggunakan kebijakan yang Anda pilih saat mendekati penuh.


Linux
  1. Apa buku Linux/Unix yang bagus untuk pengguna tingkat lanjut?

  2. Bagaimana cara membersihkan cache I/O disk di Linux?

  3. Tukar ukuran partisi untuk RAM 4GB

  1. Pengantar ruang swap pada sistem Linux

  2. Berapa jumlah ruang swap yang tepat untuk sistem Linux modern?

  3. Penurunan kinerja I/O yang masif dan tidak dapat diprediksi di Linux

  1. Linux – Bagaimana Cara Memantau Disk I/o Di Direktori Tertentu?

  2. Linux – Menentukan File Tertentu yang Bertanggung Jawab Untuk I/o Tinggi?

  3. Linux – Referensi Tapi Untuk Linux?