Apa yang akan dilakukan sistem dengan 20% sisanya?
Kernel akan menggunakan memori fisik yang tersisa untuk keperluannya sendiri (struktur internal, tabel, buffer, cache, apa pun). Pengaturan overcommitment memori menangani reservasi memori virtual aplikasi userland, kernel tidak menggunakan memori virtual tetapi fisik.
Mengapa parameter ini diperlukan di tempat pertama?
The overcommit_ratio
parameter adalah pilihan implementasi yang dirancang untuk mencegah aplikasi untuk cadangan memori lebih virtual dari apa yang cukup akan tersedia bagi mereka di masa depan, yaitu ketika mereka benar-benar mengakses memori (atau setidaknya mencoba untuk).
Pengaturan overcommit_ratio
ke 50% telah dianggap sebagai nilai default yang wajar oleh pengembang kernel Linux. Ini mengasumsikan kernel tidak perlu menggunakan lebih dari 50% RAM fisik. Jarak tempuh Anda mungkin beragam, alasannya adalah merdu.
Mengapa saya tidak selalu mengaturnya ke 100%?
Menyetelnya menjadi 100% (atau nilai "terlalu tinggi") tidak dapat diandalkan menonaktifkan komitmen berlebihan karena Anda tidak dapat mengasumsikan kernel akan menggunakan 0% (atau terlalu sedikit) RAM.
Ini tidak akan mencegah aplikasi crash karena kernel mungkin akan melakukan preempt pula semua memori fisik yang diminta.
Mengatur rasio hingga 100% tidak akan menyediakan ruang untuk halaman yang didukung file, atau alokasi dalam-kernel seperti kode kernel, buffer jaringan, dll.
Struktur dalam-kernel akan dialokasikan tanpa mempedulikan, menyebabkan overcommit. Biasanya terbatas secara individual (misalnya ada pengaturan untuk buffer jaringan). Saya tidak berpikir ada batas keseluruhan 50%, meskipun batas keseluruhan adalah sesuatu yang telah dikerjakan untuk tujuan hosting wadah.
Halaman yang didukung file adalah tempat Anda biasanya menjalankan kode userspace, jadi Anda perlu ruang untuk itu juga.
sumber