GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara memicu tindakan pada kondisi memori rendah di Linux?

Ya, kernel Linux menyediakan mekanisme untuk ini:pemberitahuan tekanan memori . Ini didokumentasikan di https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt , bagian Memory Pressure .

Singkatnya, Anda mendaftarkan deskriptor file eventfd di /sys/fs/cgroup/memory/memory.pressure_level di mana Anda ingin menerima pemberitahuan. Notifikasi ini bisa berupa low , medium , atau critical . Kasus penggunaan umum adalah membebaskan beberapa atau semua cache internal dalam proses Anda saat Anda menerima notifikasi, untuk mencegah pembunuhan OOM yang akan datang.


Apa yang Anda tanyakan pada dasarnya adalah panggilan balik berbasis kernel pada kondisi memori rendah, bukan? Jika demikian, saya sangat yakin bahwa kernel tidak menyediakan mekanisme tersebut, dan untuk alasan yang baik: karena kekurangan memori, itu harus segera menjalankan satu-satunya hal yang dapat membebaskan sebagian memori - pembunuh OOM. Program lain apa pun dapat menghentikan mesin.

Bagaimanapun, Anda dapat menjalankan solusi pemantauan sederhana di ruang pengguna. Saya memiliki persyaratan debug/tindakan memori rendah yang sama di masa lalu, dan saya menulis bash sederhana yang melakukan hal berikut:

  • monitor untuk tanda air lunak: jika penggunaan memori di atas ambang ini, kumpulkan beberapa statistik (proses, memori kosong/terpakai, dll) dan kirim email peringatan;

  • pantau hard watermark: jika penggunaan memori di atas ambang batas ini, kumpulkan beberapa statistik dan matikan proses yang membutuhkan lebih banyak memori (atau kurang penting), lalu kirim email peringatan.

Skrip seperti itu akan sangat ringan, dan dapat menyurvei mesin dengan interval kecil (yaitu:15 detik)


Linux
  1. Cara Memeriksa Ukuran Ram di Baris Perintah Linux di Gb

  2. Cara menggunakan memori bersama dengan Linux di C

  3. Cara mengetahui penggunaan memori pengguna di linux

  1. Cara Menghapus Cache Memori di Linux

  2. Bagaimana cara menempatkan / menyimpan file di memori di linux?

  3. Bagaimana penggunaan memori dilaporkan di Linux?

  1. Cara Memeriksa Penggunaan Memori di Server berbasis Linux

  2. Bagaimana cara mencatat konsumsi memori di Linux?

  3. Bagaimana kesalahan memori bit tunggal memengaruhi Linux?