Docker CPU ve Bellek Kısıtlamalarını Kullanmak

Docker container'ların CPU ve Memory kaynak kullanımlarını kısıtlayarak sistemin performansını arttırabilir ve kaynakları daha etkili bir şekilde kullanabilirsiniz. Böylece diğer container'ların ve host cihazının çalışmasını engellememiş ve kaynaklarını tüketmemiş olursunuz.

Neden kaynak kısıtlamalarını kullanmalıyız diye sorarsak, aşağıdaki nedenlerden dolayı container'ların CPU ve bellek kullanımını kısıtlamak gereklidir:

  1. Sistem kaynaklarını daha etkili kullanmak: Kısıtlamalar ile container'ların CPU ve bellek kullanımını sınırlandırarak, sistemin geri kalanının kaynaklarını daha etkili kullanmasını sağlar.
  2. Sistem performansını arttırmak: Kısıtlamalar ile container'ların CPU ve bellek kullanımını sınırlandırarak, sistemin performansını arttırırsınız.
  3. Bellek sorunlarını önlemek: Kısıtlamalar ile container'ların bellek kullanımını sınırlandırarak, sistemde bellek yetersizliği sorunlarını önleyebilirsiniz.
  4. CPU sorunlarını önlemek: Kısıtlamalar ile container'ların CPU kullanımını sınırlandırarak, sistemde CPU yetersizliği sorunlarını önleyebilirsiniz.

Docker container'larının CPU ve bellek kullanımını kısıtlamak için docker run komutunun --cpus, --cpuset-cpus, --memory, --memory-swap, --memory-reservation gibi seçeneklerini kullanabilirsiniz.

  • --cpus seçeneği ile container'ın kullanabileceği CPU miktarını kesin olarak belirlersiniz. Örnek olarak:
docker run --cpus 2 container_name

Bu komut container'ın CPU kullanımını 2 core değerine kısıtlar.

  • --cpuset-cpus parametresi ile ayrıca hangi numaralı core'ları kullanacağınızı belirleyebilirsiniz.
docker run --cpus 1.5 --cpuset-cpus="0,2" container_name

Yukarıdaki örnekte CPU kullanımı 1.5 core ile (yani --cpu-period="100000" ve--cpu-quota="150000"), kullanılacak CPU'lar ise 0 ve 2 numaralı olanlar olarak kısıtlanmıştır.

  • --memory seçeneği ile container'ın bellek kullanımının ne kadar kısıtlandığını belirleyebilirsiniz. Örnek olarak:
docker run --memory 512m container_name

Bu komut container'ın bellek kullanımını 512MB değerine kısıtlar.

  • --memory-swap seçeneği ile container'ın bellek ve swap kullanımının toplamının ne kadar kısıtlandığını belirleyebilirsiniz. Örnek olarak:
docker run --memory 512m --memory-swap 1g container_name

Bu komut container'ın bellek kullanımını 512MB ve swap kullanımını 1GB değerine kısıtlar. Böylece container  512MB dan daha fazla bellek istediği zaman, swap alanından 1GB'a  kadar daha bellek tahsis edebilir.

  • --memory-reservation seçeneği ile container'ın bellek kullanımının ne kadar kesin olarak rezerve edildiğini belirleyebilirsiniz. Örnek olarak:
docker run --memory-reservation 256m container_name

Bu komut container'ın bellek kullanımının 256MB kadarını rezerve eder. Bu seçenek ile container'ın bellek taleplerini gerçekleştirmek için en az belirli bir bellek miktarını kullanması garanti edilir. Yani container için bellek alanı önceden ayırılır ve container'ın bellek kullanımı sınırlandırılmaz.

Bu seçenekler ile container'ların CPU ve bellek kullanımını daha iyi yönetebilirsiniz ve sisteminizin performansını arttırabilirsiniz.

Docker derslerine sıradaki yazı ile devam edebilirsiniz:

Docker --ENV Parametresi ve Ortam Değişkenleri
Docker --env parametresi ile container’lara environment variable (ortam değişkeni) tanımlayabilirsiniz.