Saya punya tugas menerima daemon yang berjalan di banyak mesin. Tugas sewenang-wenang dikirim oleh klien yang kemudian dieksekusi di server, kadang-kadang mengambil sedikit memori dan terkadang mendorong hingga batas yang saya atur dalam konfigurasi daemon (tugas tidak akan pernah melebihi batas, bahkan dengan perilaku overcommit linux). Saya ingin menjaga batas setinggi mungkin, sehingga memungkinkan tugas untuk berjalan dan menyelesaikan, tetapi tidak terlalu tinggi sehingga menekan terhadap batas kotak menjadi sama sekali tidak responsif, dan tidak terlalu tinggi sehingga tugas sebenarnya memperlambat diri mereka dengan macet kotak. Saya ingin selalu dapat ssh.
Apakah ada rumus atau teknik yang bisa saya gunakan untuk menentukan seberapa besar untuk menetapkan batas? Ide terbaik yang saya miliki sekarang adalah melakukan boot baru dari kotak tanpa tugas yang berjalan dan memeriksa penggunaan memori (tidak termasuk cache / buffer) dan menganggap itu yang diperlukan untuk menjaga semuanya berjalan. Maka saya akan mengurangi itu dari berapa banyak memori fisik kotak harus mendapatkan batas.
Jawaban:
Pertama dari Jawaban: Tidak ada cara mudah untuk melakukan ini.
Sementara itu dapat dilakukan, apa yang ingin Anda lakukan adalah mencari tahu berapa banyak memori yang dapat digunakan program Anda sebelum sistem menjadi tidak responsif. Namun, ini bukan hanya masalah memori, Ini adalah masalah CPU dan bandwidth juga. Karena, bahkan dengan hanya beberapa klien, sebuah komputer super akan "tidak responsif" terhadap ssh jika Anda hanya menggunakan koneksi dial-up.
Cara terbaik untuk melakukan ini adalah dengan coba-coba. Pilih titik awal yang layak, dan tambahkan sampai Anda mulai melihat beberapa respons yang lebih lama dari biasanya.
Jadi, jika Anda menginginkan jawaban umum, sistem akan menjadi tidak responsif ketika kehabisan memori dan terhenti ...
Semoga ini membantu!
sumber