Zählen Sie die Anzahl der zulässigen CPUs in einem Docker-Container

14

Mein spezielles Szenario ist das folgende. Ich starte einen Docker-Container mit einem bestimmten cpuset:

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

In diesem Container führe ich ein Shell-Skript als Einstiegspunkt aus und dieses Shell-Skript wird makeirgendwann ausgeführt. Ich würde gerne herausfinden, wie viele Jobs ( -j) wären. Ich könnte natürlich die Anzahl der zugewiesenen CPUs durch die Umgebung leiten, aber eine automatische Erkennung wäre sehr bevorzugt.

Ich weiß, dass ich das für den aktuellen Prozess verwenden taskset -c -p $$oder cat /proc/self/status | grep Cpus_allowed_listabrufen Cpus_allowedkann, aber ich weiß nicht, wie ich die tatsächliche Anzahl der zulässigen CPUs abrufen kann. Ich würde es gerne vermeiden, die Ausgabe dieser Befehle zu analysieren oder mit der Cpus_allowedMaske zu fummeln , aber ich werde es tun, wenn keine Optionen mehr verfügbar sind.

pmr
quelle
1
nproc- Anzahl der verfügbaren Verarbeitungseinheiten drucken
Brian
@ Brian Das war zu einfach.
13.05.15

Antworten:

19

Sie können das nprocShell-Skript-Tool verwenden.

So wäre es -j$(nproc)in der make-Kommandozeile fraglich.

Brian
quelle
1
"docker run --rm --cpus 2 debian nproc" -> 8?
Evan Benn
1
@EvanBenn the --cpus="2"begrenzt die Anzahl der Verarbeitungseinheiten nicht und entspricht -cpu-period="100000" and --cpu-quota="200000".
Brian