Membatasi Penggunaan Memory dan CPU pada Docker Container
Membatasi Penggunaan Memory dan CPU Docker Container. Saat kita menjalankan sebuah container secara default menggunakan seluruh resource dari host. Nah, jika tiba-tiba ada lonjakan penggunaan memory atau CPU di container bisa saja aktifitas di host terganggu.
Nah di tutorial ini saya akan sharing sedikit mengenai bagaimana cara membatasi penggunaan CPU dan memory di docker container.
Namun sebelum melanjutkan tutorial ini pastikan kernel di host system kalian sudah mendukung swap limit. Jalankan perintah
Jalankan kembali perintah docker info dan pastikan warning yang muncul sebelumnya sudah tidak ada.
Membatasi Penggunaan CPU
Oke, untuk benchmark didalam container kalian bisa menggunakan tool stress. Atau untuk percobaan kalian bisa gunakan image docker-stress. Di tutorial ini saya akan menggunakan image docker-stress untuk percobaan.
Untuk permulaan, saya coba jalankan images tanpa pembatasan CPU.
Sekarang kita coba batasi penggunaan CPUnya. Di docker sendiri sudah disediakan fitur limitasi tersebut dengan menambahkan parameter --cpus.
Sebagai contoh disini saya akan batasi penggunaan CPU oleh container adalah 1 core dari total 8 cores yang saya miliki.
Atau, kita bisa mengalokasikan beberapa core secara menyeluruh untuk si container. Parameter yang digunakan adalah --cpuset-cpus.
Sebagai contoh, disini saya ingin mengalokasikan core pertama dan kedua ke container, maka perintah dockernya adalah
Membatasi Penggunaan Memory
Nah selanjutnya kita akan membatas mengenai pembatasan memory. Ini adalah contoh dimana penggunaan memory atau RAM tidak dibatasi.
Nah, sekarang kita coba batasi penggunaan memory oleh container dengan menambahkan parameter --memory. Di contoh ini saya coba batasi penggunaan memorynya menjadi maksimal 2GB saja.
Atau jika kita ingin menambahkan alokasi swap ke container maka perintahnya
https://docs.docker.com/config/containers/resource_constraints/
Jangan lupa share agar lebih banyak yang tau, dan jika ada yang ingin ditanyakan silahkan tinggalkan komentar.
Nah di tutorial ini saya akan sharing sedikit mengenai bagaimana cara membatasi penggunaan CPU dan memory di docker container.
Namun sebelum melanjutkan tutorial ini pastikan kernel di host system kalian sudah mendukung swap limit. Jalankan perintah
docker infoJika di akhir baris ada warning "WARNING: No swap limit support", edit file /etc/default/grub dan tambahkan baris
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"Update grub dengan perintah
sudo update-grubLalu reboot system.
Jalankan kembali perintah docker info dan pastikan warning yang muncul sebelumnya sudah tidak ada.
Membatasi Penggunaan CPU
Oke, untuk benchmark didalam container kalian bisa menggunakan tool stress. Atau untuk percobaan kalian bisa gunakan image docker-stress. Di tutorial ini saya akan menggunakan image docker-stress untuk percobaan.
Untuk permulaan, saya coba jalankan images tanpa pembatasan CPU.
docker run -d --rm progrium/stress -c 8 -t 10shasilnya, CPU di host saya ikut jebol.
Sekarang kita coba batasi penggunaan CPUnya. Di docker sendiri sudah disediakan fitur limitasi tersebut dengan menambahkan parameter --cpus.
Sebagai contoh disini saya akan batasi penggunaan CPU oleh container adalah 1 core dari total 8 cores yang saya miliki.
docker run -d --rm --cpus 1 progrium/stress -c 8 -t 10sPenggunaannya pun akan dibatasi menjadi hanya 1 core penuh dibagi 8 cores.
Atau, kita bisa mengalokasikan beberapa core secara menyeluruh untuk si container. Parameter yang digunakan adalah --cpuset-cpus.
Sebagai contoh, disini saya ingin mengalokasikan core pertama dan kedua ke container, maka perintah dockernya adalah
docker run -d --rm --cpuset-cpus 0,1 progrium/stress -c 8 -t 10s
Membatasi Penggunaan Memory
Nah selanjutnya kita akan membatas mengenai pembatasan memory. Ini adalah contoh dimana penggunaan memory atau RAM tidak dibatasi.
docker run -d --rm --cpus=".5" progrium/stress --vm 15 --vm-bytes 1024M -t 20sNilai vm 15 dan vm-bytes 1024M adalah jumlah total memory yang tersedia di host. 15*1024M.
Nah, sekarang kita coba batasi penggunaan memory oleh container dengan menambahkan parameter --memory. Di contoh ini saya coba batasi penggunaan memorynya menjadi maksimal 2GB saja.
docker run -d --rm --cpus=".5" --memory="2g" progrium/stress --vm 15 --vm-bytes 1024M -t 20s
Atau jika kita ingin menambahkan alokasi swap ke container maka perintahnya
docker run -d --rm --cpus=".5" --memory="2g" --memory-swap="2g" progrium/stress --vm 15 --vm-bytes 1024M -t 20sOke mungkin sekian tutorial singkat kali ini. Untuk pembahasan lengkap mengenai pembatasan resources pada container kalian bisa baca melalui artikel berikut
https://docs.docker.com/config/containers/resource_constraints/
Jangan lupa share agar lebih banyak yang tau, dan jika ada yang ingin ditanyakan silahkan tinggalkan komentar.