LINUXSEC

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

docker info

Jika 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-grub

Lalu 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 10s

hasilnya, 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 10s

Penggunaannya 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 20s

Nilai 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 20s

Oke 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.

Komentar

    Tinggalkan Komentar

    Silahkan tinggalkan komentar jika ada masukan, pertanyaan, kritik ataupun dukungan. Namun pastikan untuk berkomentar secara sopan.