Cara untuk membatasi berapa banyak RAM proses sewenang-wenang dapat mengambil?

12

Katakanlah kita memiliki mesin OS X yang berjalan dengan 4 GB RAM. Apakah mungkin untuk mengaturnya sehingga tidak ada proses tunggal yang dapat mengambil lebih dari katakanlah, 3 GB, jadi tidak masalah bagaimana memori menghambat proses, selalu ada beberapa memori yang tersisa untuk menjaga sistem responsif?

Fomite
sumber
6
Tidak. Dan ini akan menjadi kontraproduktif. Mengatur alokasi RAM bukanlah sesuatu yang dirancang oleh OS. RAM gratis adalah RAM yang terbuang. Terlalu banyak yang dibuat dari manajemen RAM OS X yang seharusnya buruk. Kegiatan Penutup Memantau dan melanjutkan hidup Anda tampaknya menjadi obat terbaik.
8
@ cksum Ada serangkaian asumsi dalam komentar Anda, yang sebagian besar salah. Saya tidak mencoba untuk mendukung manajemen memori OS X. Apa yang sebenarnya saya lakukan adalah mencoba mencari tahu apakah ada cara untuk mempertahankan fungsionalitas sistem yang cukup saat menguji beberapa kode yang agak mudah berubah menjadi proses pelarian. Karena RAM bebas bukan RAM yang sia-sia jika yang memungkinkan Anda untuk memperbaiki kesalahan.
Fomite
3
Maaf, tetapi jika pertanyaan Anda terkait dengan pemrograman, (pengembangan dan pengujian) aplikasi, maka itu di luar topik untuk forum ini. Silakan lihat di FAQ untuk info lebih lanjut tentang apa jenis pertanyaan termasuk di sini: apple.stackexchange.com/faq
10
FFS, ini bukan pertanyaan pemrograman. Ini pertanyaan OS. Membatasi memori proses sewenang-wenang dapat menggunakan - Safari, Matlab, Call of Duty, apa pun - pada tingkat OS jelas merupakan pertanyaan OS.
Fomite
7
Menjadi situs untuk "penggemar dan pengguna daya Apple" pertanyaan yang pada dasarnya adalah tentang memori virtual jelas terikat dan pada topik. Bahkan jika pengembangan terkait, ini akan berlaku untuk masalah tuning atau kinerja.
bmike

Jawaban:

9

Pertanyaan serupa untuk ini dicatat di sini Bagaimana Saya Dapat Membatasi Jumlah RAM yang Dapat Digunakan Aplikasi Mac OS?

Mereka merekomendasikan penggunaan perintah ulimit , tetapi mereka tidak berhasil membatasi jumlah yang mereka inginkan. Saya pikir masalah yang mereka hadapi adalah kenyataan bahwa opsi yang diset -u atau -v tidak memperhitungkan sistem paging memori, misalnya Anda hanya dapat mengalokasikan jumlah ruang X untuk Anda memproses dalam RAM nyata, tetapi kita dapat halaman Anda kehabisan memori virtual sepanjang hari.

Perhatikan bahwa ini mungkin Berbahaya menonaktifkan Memori Virtual, itu bisa mengakibatkan Mac Anda hanya terkunci, dll ketika menjalankan RAM.

Coba jalankan ulimit dengan argumen -l, -m, atau -v namun seperti yang tercantum di halaman manual ulimit hingga ke OS jika ia akan memperhatikan pengaturan ini atau tidak seperti yang disebutkan.

ulimit: ulimit [-SHacdefilmnpqrstuvx] [batas]

Ubah batas sumber daya shell.

Memberikan kontrol atas sumber daya yang tersedia untuk shell dan proses yang dibuatnya, pada sistem yang memungkinkan kontrol tersebut.

Tidak dapat menemukan sumber pasti yang mengonfirmasi apakah OS X mengabaikan ulimit atau tidak, tetapi setelah ulimit yang dirujuk gagal

Jika Anda dapat membuat ulimit bekerja untuk kebutuhan Anda dengan sendirinya, cobalah, jika bukan kombinasi ulimit dan atau menonaktifkan memori virtual mungkin dapat memungkinkan Anda menetapkan batas 3 GB pada proses tertentu. FYI di sini adalah tautan yang bagus untuk informasi lebih lanjut tentang Memori Virtual Nonaktifkan Sepenuhnya dalam Sistem Snow Leopard 10.6

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
MrDaniel
sumber
Ini sepertinya jawaban yang kemungkinan benar - Saya akan mencobanya ketika berikutnya saya menjalankan ini. Untuk saat ini, terima jawabannya.
Fomite
5

Jika Anda menjalankan Server Lion (atau OSX yang lebih baru) di Mac Anda, Anda mungkin dapat menjalankan OSX di dalam VM (VirtualBox, Parallels, atau VMWare, et.al.) pada Mac itu. Batasi VM hingga 3GB RAM fisik, dan aplikasi atau proses apa pun di dalam VM juga akan sangat terbatas. Sistem hosting VM harus tetap responsif bahkan jika OS di VM mendukung-swap-disk-terbatas atau crash.

Jika Anda sedang men-debug proses yang berpotensi melarikan diri, Anda mungkin dapat ssh ke VM untuk menjalankan debugger atau debug nub dari baris perintah, dan mencatat hal-hal sampai semuanya terkunci.

hotpaw2
sumber