Ben çalıştırıyorum Diyelim çoklu işlem , tüm / çoklu çekirdek / konağın işlemcileri ya da sadece birini kullanmak liman işçisi olacak çoklu süreçleri yumurtlama bir liman işçisi kabın içine hizmet?
Ben çalıştırıyorum Diyelim çoklu işlem , tüm / çoklu çekirdek / konağın işlemcileri ya da sadece birini kullanmak liman işçisi olacak çoklu süreçleri yumurtlama bir liman işçisi kabın içine hizmet?
Yanıtlar:
Charles'ın bahsettiği gibi, varsayılan olarak tümü kullanılabilir veya --cpuset-cpus
parametreyi kullanarak kapsayıcı başına sınırlayabilirsiniz .
docker run --cpuset-cpus="0-2" myapp:latest
Bu, konteyneri 3 CPU (0, 1 ve 2) ile sınırlar. Daha fazla ayrıntı için docker run belgelerine bakın.
Kapsayıcıların CPU kullanımını sınırlamanın tercih edilen yolu, CPU'larda kesirli bir sınırdır:
docker run --cpus 2.5 myapp:latest
Bu, konteynırınızı ana bilgisayarda 2,5 çekirdek ile sınırlar.
Son olarak, Docker for Mac, Docker for Windows ve docker-machine dahil olmak üzere bir VM içinde docker çalıştırırsanız, bu VM'lerin dizüstü bilgisayarınızın kendisinden ayrı bir CPU limiti olacaktır. Docker, bu sanal makinenin içinde çalışır ve sanal makinenin kendisine verilen tüm kaynakları kullanır. Örneğin, Mac için Docker ile aşağıdaki menüye sahipsiniz:
Belki ana sanal makinenizin varsayılan olarak yalnızca bir çekirdeği vardır. Bu nedenle, önce VM cpu-sayınızı artırmalı ve ardından docker çekirdeklerinizi artırmak için --cpuset-cpus seçeneğini kullanmalısınız . Aşağıdaki komutu kullanarak docker varsayılan sanal makinesini kaldırabilir, ardından isteğe bağlı cpu-count ve bellek boyutu ile başka bir VM oluşturabilirsiniz :
docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default
Bu adımdan sonra görüntünüzü çalıştırmadan önce çekirdek sayısını belirleyebilirsiniz. bu komut toplam 8 çekirdekten 4 çekirdek kullanacaktır.
docker run -it --cpuset-cpus="0-3" your_image_name
Ardından bu komutu kullanarak görüntünüzdeki mevcut çekirdek sayısını kontrol edebilirsiniz:
nproc
--cpuset-cpus
Bunu değiştirmek isteyip istemediğine bak .