Memory Ballooning di Linux / Unix pada VMware ESXi

Oct 02 2020

Saya butuh bantuan untuk mendapatkan kembali memori yang menggelembung di mesin Linux / Unix. Tolong bantu saya. Saya menemukan beberapa solusi tetapi tidak dapat saya lakukan di server produksi.

Saya hanya perlu tahu bagaimana cara mendapatkan kembali memori yang menggelembung tanpa me-reboot atau memindahkan mesin ke host lain.

Jawaban

3 Stuggi Oct 11 2020 at 23:43

Balon hanya terjadi dalam beberapa kondisi yang sangat spesifik. Agar VMware ESXi dapat "mengembang" driver balon di VM, host harus berada di bawah persaingan memori yang sangat berat, biasanya kurang dari 4% dari memori kosong di host.

Ide dengan driver balon adalah agar VMTools mulai menggunakan memori di dalam VM, yang ditanggapi oleh OS VM dengan memberikan halaman memori driver balon. Driver balon sebenarnya tidak membutuhkan halaman ini untuk apa pun, tetapi ia memberi tahu hypervisor halaman memori mana yang sebenarnya tidak digunakan VM untuk apa pun, sehingga halaman tersebut dapat dibuang dengan aman oleh hypervisor. Jika ini tidak menyelesaikan masalah pertengkaran memori pada host, hypervisor terus mengembangkan driver balon, hingga 65% persen dari memori virtual yang ditetapkan secara default, yang menyebabkan OS di VM mulai bertukar ke disk. Ini bukan hasil yang bagus, tetapi jauh lebih baik daripada hypervisor yang menukar ke disk karena OS di VM benar-benar tahu halaman apa yang masuk akal untuk ditukar ke disk.

Cara untuk membatasi penggelembungan adalah dengan menonaktifkannya per VM (bukan strategi yang bagus), atau mencadangkan memori untuk VM. Jika VM mengatakan RAM 4 GB dan cadangan memori 3 GB, driver balon hanya dapat mengembang hingga 1 GB.

Karena ballooning adalah strategi terakhir untuk ESXi, itu hampir selalu berarti bahwa Anda memiliki terlalu sedikit memori yang terpasang pada host Anda.

2 MichaelHampton Oct 02 2020 at 01:18

Anda dapat menyetel sched.mem.maxmemctlparameter untuk VM guna menentukan jumlah memori maksimum (dalam megabyte) yang dapat diperoleh kembali dari tamu melalui balon memori. Ini juga dapat disetel ke 0 untuk menonaktifkan pembengkakan sepenuhnya untuk tamu.

Perhatikan bahwa jika terjadi balon, host Anda kemungkinan besar membutuhkan lebih banyak memori fisik untuk dipasang. Ballooning memungkinkan ESXi mengambil memori "tidak terpakai" dari tamu dan menggunakannya untuk tamu lain, tetapi OS modern benar-benar tidak memiliki memori "tidak terpakai" lagi, karena apa pun yang mereka lakukan telah digunakan misalnya untuk penyimpanan cache. Jadi performa tamu bisa berkurang saat memori ini diambil.