GNU/Linux >> Belajar Linux >  >> Linux

Sistem hang saat kehabisan memori

Dimungkinkan untuk memanggil OOM-killer (out of memory killer) secara langsung dengan kombinasi keyboard:

SysRq-F

Tombol SysRq biasanya digabungkan dengan tombol PrtSc pada keyboard.

OOM-killer membunuh beberapa proses(-es) dan sistem menjadi responsif kembali.

Terima kasih Raman atas saran tentang fitur ini dalam komentar di atas.

PS:Ini sangat membantu saya. Saya setuju dengan pendapat bahwa ini adalah saran paling berguna tentang masalah itu jika disebabkan oleh Chrome atau perangkat lunak serakah memori apa pun. Namun perlu diingat bahwa OOM-killer dapat menghentikan beberapa proses yang sangat penting, gunakan dengan hati-hati.


Keadaan alaminya adalah bahwa data aplikasi ada di RAM, dan file ada di disk.
Keadaan ideal, dari segi kinerja, adalah bahwa data yang sering digunakan ada di RAM, dan data yang tidak diperlukan saat ini ada di disk.
Pada sistem normal, kernel melakukan dua hal untuk mencapai cita-cita ini:

  • Data aplikasi yang sudah lama tidak digunakan dapat dipindahkan ke disk:ini swap.
  • Data dari file yang telah digunakan baru-baru ini disimpan di RAM:ini adalah cache disk (untuk data yang dibaca dari disk) dan buffer disk (untuk data yang akan ditulis ke disk).

Pada sistem tipikal, sebagian besar RAM dikhususkan untuk cache dan buffer (50% adalah angka tipikal). Karena RAM adalah sumber daya yang terbatas, ini mungkin memerlukan penggantian beberapa data aplikasi untuk ditukar (pertukaran hanya diperlukan jika ada cara yang lebih baik untuk menggunakan RAM).

Pada sistem tanpa swap, ada saatnya data aplikasi menggunakan hampir semua RAM, sehingga hampir tidak ada ruang tersisa untuk cache. Maka sistem cenderung lambat. Kernel tidak akan mulai membunuh aplikasi sampai benar-benar harus. Selama aplikasi hanya mengisi 99% dari memori yang tersedia, sistem terus berjalan, tetapi sangat lambat karena data file harus dimuat dan dimuat ulang dari disk setiap saat. Dengan menjalankan aplikasi yang sama, sistem akan lebih cepat dengan swap pada saat itu.

Untuk informasi lebih lanjut tentang masalah ini, lihat diskusi lkml ini dan postingan blog ini.

Saya tidak tahu cara langsung untuk memberi tahu kernel agar mencadangkan jumlah minimum RAM untuk cache disk. Anda dapat mengatur sebagian kecil dari RAM Anda sebagai ruang swap, bahkan mungkin dikompresi. Ada laporan keberhasilan di depan itu, meskipun saya tidak membuat jaminan dalam kasus khusus Anda.


Baru-baru ini saya menemukan solusi untuk masalah saya.

Karena Linux OOM killer tidak dapat melakukan tugasnya dengan baik, saya mulai menggunakan userspace OOM Killer:earlyoom. Itu ditulis dalam C, cukup dapat dikonfigurasi dan berfungsi seperti pesona bagi saya.

Saya juga mendengar tentang beberapa alternatif, seperti OOMD Facebook, yang dikembangkan untuk berjalan di server mereka, tetapi saya belum mencoba yang ini


Linux
  1. Linux:cari tahu proses apa yang menggunakan semua RAM?

  2. Chrome memakan semua RAM dan membekukan sistem

  3. Akankah sistem saya fsck ketika saya reboot?

  1. dmidecode:Dapatkan Informasi Perangkat Keras Sistem Di Linux

  2. Statistik sistem:perintah stat Linux untuk diketahui

  3. Mengapa Swap digunakan ketika banyak memori kosong yang tersisa?

  1. Bagaimana Mencegah Sistem Menjadi Tidak Responsif Saat Thrashing (Out Of Ram)?

  2. Periksa Beban Sistem di Linux

  3. Diagnostik memori rendah Windows