Załóżmy, że uruchamiam usługę wieloprocesorową w kontenerze docker, który uruchamia wiele procesów, czy docker używa wszystkich / wielu rdzeni / procesorów hosta, czy tylko jednego?
120
Załóżmy, że uruchamiam usługę wieloprocesorową w kontenerze docker, który uruchamia wiele procesów, czy docker używa wszystkich / wielu rdzeni / procesorów hosta, czy tylko jednego?
--cpuset-cpus
czy chcesz to zmienić.Odpowiedzi:
Jak wspomina Charles, domyślnie można użyć all lub możesz ograniczyć to do kontenera za pomocą
--cpuset-cpus
parametru.To ograniczyłoby kontener do 3 procesorów (0, 1 i 2). Zobacz dokumentację docker run, aby uzyskać więcej informacji.
Preferowanym sposobem ograniczenia wykorzystania procesora przez kontenery jest ułamkowy limit liczby procesorów:
To ograniczyłoby twój kontener do 2,5 rdzeni na hoście.
Na koniec, jeśli uruchomisz docker wewnątrz maszyny wirtualnej, w tym Docker for Mac, Docker for Windows i docker-machine, te maszyny wirtualne będą miały limit procesora oddzielony od samego laptopa. Docker działa wewnątrz tej maszyny wirtualnej i wykorzysta wszystkie zasoby przekazane samej maszynie wirtualnej. Np. Z Dockerem na Maca masz następujące menu:
źródło
Być może Twoja maszyna wirtualna hosta ma domyślnie tylko jeden rdzeń. Dlatego należy najpierw zwiększyć liczbę procesorów VM, a następnie użyć opcji --cpuset-cpus , aby zwiększyć liczbę rdzeni dockera . Możesz usunąć domyślną maszynę wirtualną Dockera za pomocą następującego polecenia, a następnie możesz utworzyć inną maszynę wirtualną z opcjonalną liczbą procesorów i rozmiarem pamięci . :
Po tym kroku możesz określić liczbę rdzeni przed uruchomieniem obrazu. to polecenie użyje 4 rdzeni z łącznie 8 rdzeni.
Następnie możesz sprawdzić liczbę dostępnych rdzeni na swoim obrazie za pomocą tego polecenia:
źródło