Ketika saya mencoba melakukan perhitungan yang perlu mengalokasikan dan menggunakan memori 128 GB (ini adalah program baris perintah yang ditulis dalam C), kernel membunuh proses saya dengan prasangka ekstrem. Entri log konsol ini adalah contoh dari satu contoh:
9/25/15 7: 08: 40.000 PM kernel [0]: swap rendah: membunuh pid 6202 (huffgrp)
Perhitungan berfungsi dengan baik dan dalam jumlah waktu yang wajar ketika mengalokasikan dan menggunakan memori 64 GB. Mesin saya memiliki 32 GB RAM dan ruang beaucoup pada hard drive. Saya juga mencoba ini di komputer lain dengan 8 GB RAM, di mana perhitungan 64 GB berjalan dengan baik juga, mengambil lebih lama tentu saja, tetapi perhitungan 128 GB terbunuh oleh kernel dengan cara yang sama. Pada keduanya saya menjalankan Yosemite 10.10.5.
Omong-omong, malloc()
jangan pernah mengembalikan kesalahan, tidak peduli berapa banyak ruang yang saya minta. Kernel hanya akan mematikan proses setelah terlalu banyak memori yang benar-benar digunakan oleh proses, menghasilkan banyak pertukaran ke hard drive.
Jadi tampaknya ada batas ruang swap rahasia di suatu tempat antara 64 GB dan 128 GB.
Pertanyaan saya adalah: bagaimana cara mengkonfigurasi ulang kernel untuk mengizinkan lebih banyak ruang swap? Saya menemukan file yang tampak menjanjikan /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
, tetapi saya tidak melihat nomor rahasia di sana. Halaman manual untuk dynamic_pager
mengatakan bahwa semua yang dilakukannya adalah mengatur nama dan lokasi file swap. Ada versi yang lebih lama dari halaman manual yang sama yang mendokumentasikan -S
opsi untuk mengatur ukuran file swap yang dibuat. Saya mencobanya, meminta 160 GB swapfiles, tetapi tidak berpengaruh. File swap masing-masing masih 1 GB, dan prosesnya masih dimatikan oleh kernel.