GNU/Linux >> Belajar Linux >  >> Linux

Kemana perginya sisa memori vm.overcommit_ratio?

Apa yang akan dilakukan sistem dengan 20% sisanya?

Kernel akan menggunakan memori fisik yang tersisa untuk tujuannya sendiri (struktur internal, tabel, buffer, cache, apa pun). Pengaturan overcommitment memori menangani reservasi memori virtual aplikasi userland, kernel tidak menggunakan memori virtual tetapi memori fisik.

Mengapa parameter ini diperlukan?

overcommit_ratio parameter adalah pilihan implementasi yang dirancang untuk mencegah aplikasi menyimpan lebih banyak memori virtual daripada yang tersedia secara wajar untuk mereka di masa mendatang, yaitu ketika mereka benar-benar mengakses memori (atau setidaknya mencoba).

Menyetel overcommit_ratio hingga 50% telah dianggap sebagai nilai default yang masuk akal oleh pengembang kernel Linux. Ini mengasumsikan kernel tidak perlu menggunakan lebih dari 50% dari RAM fisik. Jarak tempuh Anda mungkin berbeda, alasan mengapa itu bisa disetel.

Mengapa saya tidak selalu menyetelnya ke 100%?

Menyetelnya ke 100% (atau nilai "terlalu tinggi") tidak dapat diandalkan untuk menonaktifkan komitmen berlebih karena Anda tidak dapat berasumsi bahwa kernel akan menggunakan 0% (atau terlalu sedikit) RAM.

Itu tidak akan mencegah aplikasi mogok karena kernel mungkin mendahului semua memori fisik yang dibutuhkannya.


Menyetel rasio ke 100% tidak akan mencadangkan ruang apa pun untuk halaman yang didukung file, atau alokasi dalam kernel seperti kode kernel, buffer jaringan, dll.

Struktur dalam kernel akan dialokasikan terlepas, menyebabkan overcommit. Mereka umumnya dibatasi secara individual (mis. Ada pengaturan untuk buffer jaringan). Menurut saya tidak ada batas keseluruhan sebesar 50%, meskipun batas keseluruhan adalah sesuatu yang telah dikerjakan untuk tujuan menghosting wadah.

Halaman yang didukung file adalah tempat Anda biasanya menjalankan kode userspace, jadi Anda memerlukan ruang untuk itu juga.


Linux
  1. Bagaimana cara memantau penggunaan memori yang didedikasikan untuk kernel?

  2. Di mana isi /proc dari kernel Linux didokumentasikan?

  3. Di mana parameter kernel Linux yang ada di /proc/sys didokumentasikan?

  1. Kernel Linux:5 inovasi teratas

  2. Berapa banyak RAM yang digunakan kernel?

  3. Apa gunanya memiliki bagian kernel di ruang memori virtual proses Linux?

  1. Siklus hidup pengujian kernel Linux

  2. Di mana saya menemukan versi pohon sumber kernel Linux?

  3. Apa antarmuka untuk panggilan sistem ARM dan di mana itu didefinisikan dalam kernel Linux?