Policz liczbę dozwolonych procesorów w kontenerze Docker


14

Mój konkretny scenariusz jest następujący. Uruchamiam kontener dokerów z określonym zestawem procesorów:

docker run --cpuset-cpus="0-2" # ...

w tym kontenerze uruchamiam skrypt powłoki jako punkt wejścia i ten skrypt powłoki makew pewnym momencie uruchomi się. Chciałbym dowiedzieć się, jaka byłaby dobra liczba miejsc pracy ( -j). Mógłbym oczywiście przekazać liczbę przydzielonych procesorów przez środowisko, ale automatyczny sposób na ich wykrycie byłby znacznie preferowany.

Wiem, że mogę użyć taskset -c -p $$lub cat /proc/self/status | grep Cpus_allowed_listpobrać Cpus_allowedbieżący proces, ale nie wiem, jak pobrać rzeczywistą liczbę dozwolonych procesorów. Chciałbym uniknąć analizowania danych wyjściowych tych poleceń lub majstrowania przy Cpus_allowedmasce, ale zrobię to, gdy nie będzie dostępnych opcji.


1
nproc- wydrukuj liczbę dostępnych jednostek przetwarzania
Brian

@Brian To było zbyt łatwe.
pmr

Odpowiedzi:


19

Możesz użyć nprocnarzędzia skryptowego powłoki.

Byłoby to -j$(nproc)w danym wierszu polecenia make.


1
„docker run --rm --cpus 2 debian nproc” -> 8?
Evan Benn,

2
@EvanBenn --cpus="2"nie ogranicza liczby jednostek przetwarzających i jest równoważne z -cpu-period="100000" and --cpu-quota="200000".
Brian
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.