Dari komentar Anda, sepertinya sistem baru saja bertukar.
Linux memiliki OOM killer, yang dipanggil ketika sistem memiliki terlalu banyak memori, dan sekarang telah habis.
Linux secara default melakukan memory overcommit, yang pada dasarnya berarti program ini memberikan lebih banyak memori daripada sistem sebenarnya. Ini melakukan ini dengan asumsi bahwa program tidak akan benar-benar menggunakan semua memori yang mereka minta. Namun ketika sistem kehabisan memori, ia sudah memberi tahu berbagai proses yang sedang berjalan bahwa mereka memiliki memori, sehingga tidak bisa hanya menolaknya lagi. Sebaliknya apa yang dilakukannya adalah memanggil pembunuh OOM. Pembunuh OOM pada dasarnya menemukan proses yang menurut kernel akan meringankan kondisi kehabisan memori. Biasanya ini hanya proses menggunakan sebagian besar memori, tetapi algoritma sebenarnya jauh lebih kompleks dari itu.
Karena Anda telah overcommit_memorymengatur ke 0(mode otomatis), kernel sedang melakukan overcommit memori. Jadi dari perilaku Anda yang dijelaskan, sepertinya sistem hanya bertukar berat.
Dari sini ada 2 opsi.
Kurangi swap
Sistem Anda kehabisan RAM, dan karena itu kernel mulai mendorong hal-hal menjadi swap. Jika sistem Anda kehabisan swap, maka itu memanggil pembunuh OOM. Namun karena Anda masih memiliki ruang swap gratis, ini tidak terjadi.
Ide awal Anda, secara manual mematikan suatu proses.
Anda dapat mematikan proses secara manual ketika Anda berpikir sistem bertukar terlalu banyak dan sesuatu perlu mati. Ini dapat dilakukan melalui pemicu kernel SysRq.
Kernel memiliki apa yang disebutnya "magic SysRq". Ini adalah sedikit fungsionalitas yang memberi tahu kernel untuk melakukan semacam operasi darurat. Ini dapat berupa "remount semua volume read-only", "sync all filesystems", atau "reboot now". Salah satu opsi ini adalah untuk memanggil pembunuh OOM.
Jika kernel Anda mengaktifkan SysRq ajaib (opsi kernel CONFIG_MAGIC_SYSRQ), Anda dapat melakukannya dengan 2 cara.
- Alt+ SysRq+ f
Cukup tekan 3 tombol ini di keyboard.
echo f > /proc/sysrq-trigger
Ini akan melakukan tugas yang sama persis seperti metode keyboard, tetapi melakukannya secara terprogram.
Anda juga dapat menonaktifkan swap sepenuhnya, dan inilah yang saya lakukan pada sebagian besar sistem saya, dan untuk alasan yang tepat ini. Swap bermanfaat karena kernel akan terlebih dahulu bertukar data yang tidak digunakan, membiarkan lebih banyak ram Anda digunakan untuk caching. Tapi itu mengarah ke masalah swapping paksa yang Anda lihat.
Saya pribadi berpikir solusi terbaik adalah semacam opsi kernel untuk memanggil pembunuh OOM pada swapping paksa. Pada dasarnya biarkan preemptive swap berfungsi, tetapi jika kernel dipaksa untuk memindahkan sesuatu ke swap karena Anda kehabisan RAM, maka panggil pembunuh OOM.
Sayangnya ini hanya keinginan pribadi saya. Itu tidak melakukan ini.