Saya rasa ini bukan masalah yang tidak biasa: satu proses mengalokasikan sejumlah besar memori (baik itu karena bug kebocoran memori, karena Anda mencoba memproses file input yang sangat besar, atau apa pun). RAM terisi, dan di beberapa titik Linux harus beralih untuk bertukar. Yah, kadang-kadang ini hanya jalan terakhir: jika saya memiliki perhitungan yang mahal, saya tidak ingin kehilangan data jika pada akhirnya saya kehabisan RAM.
Namun lebih sering (dalam pengalaman saya), konsumsi memori tidak dibatasi, oleh proses yang nakal, mungkin buggy. Yaitu, saya tidak hanya berakhir dengan beberapa data yang tidak terlalu dibutuhkan untuk dipindahkan, tetapi OS dipaksa untuk secara panik bertukar banyak data. Dan itu sayangnya tidak hanya sangat memecah proses yang menyinggung, tetapi dapat membuat seluruh sistem hampir macet (itu tidak cukup buruk lagi pada mesin dengan SSD, tapi OTOH itu membuat saya khawatir apakah menulis gigabyte dan gigabyte data sampah mungkin di jangka panjang membahayakan sel-sel flash).
Sampai saya melihat masalah dan mematikan proses secara manual (setelah itu benar-benar butuh beberapa menit sampai saya bahkan masuk ke terminal virtual!), Setengah sesi saya berjalan di swap, dan saya perlu menunggu beberapa saat sampai sistem berjalan dengan lancar lagi.
Ada satu solusi drakonik untuk masalah ini: menegakkan batas memori keras. Tetapi melakukan seluruh sistem ini kadang-kadang akan membunuh proses yang saya lebih suka masih, dan jika saya harus secara manual ulimit
sebelum memulai proses menyinggung ... well, saya akan sering lupa sampai sudah terlambat.
Kemungkinan jenis solusi yang akan membuat saya lebih bahagia:
- Jika ada proses yang melebihi penggunaan memori tertentu, proses ini secara otomatis diperlambat sehingga sistem lainnya tetap responsif.
- Jika ada proses yang melebihi penggunaan memori tertentu, itu
SIGSTOP
jadi saya punya waktu untuk mencari tahu apa yang harus dilakukan selanjutnya. - Jika suatu proses mendekati batas RAM, saya mendapat peringatan, sebelum pertukaran besar dimulai.
Apakah ada cara untuk mendapatkan perilaku seperti itu, atau serupa?
ulimit
untuk apa.