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 make
irgendwann 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_list
abrufen Cpus_allowed
kann, 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_allowed
Maske zu fummeln , aber ich werde es tun, wenn keine Optionen mehr verfügbar sind.
nproc
- Anzahl der verfügbaren Verarbeitungseinheiten druckenAntworten:
Sie können das
nproc
Shell-Skript-Tool verwenden.So wäre es
-j$(nproc)
in der make-Kommandozeile fraglich.quelle
--cpus="2"
begrenzt die Anzahl der Verarbeitungseinheiten nicht und entspricht-cpu-period="100000" and --cpu-quota="200000"
.