Nehmen wir an, ich führe einen Multiprozessor- Dienst in einem Docker-Container aus, der mehrere Prozesse erzeugt. Würde Docker alle / mehrere Kerne / CPUs des Hosts oder nur einen verwenden?
120
Nehmen wir an, ich führe einen Multiprozessor- Dienst in einem Docker-Container aus, der mehrere Prozesse erzeugt. Würde Docker alle / mehrere Kerne / CPUs des Hosts oder nur einen verwenden?
--cpuset-cpus
Sie, ob Sie das ändern wollten.Antworten:
Wie Charles erwähnt, können standardmäßig alle verwendet werden, oder Sie können sie pro Container mithilfe des
--cpuset-cpus
Parameters begrenzen .Dies würde den Container auf 3 CPUs (0, 1 und 2) beschränken. Weitere Informationen finden Sie in den Docker-Ausführungsdokumenten .
Der bevorzugte Weg, um die CPU-Auslastung von Containern zu begrenzen, besteht in einem Bruchteil der CPUs:
Das würde Ihren Container auf 2,5 Kerne auf dem Host beschränken.
Wenn Sie Docker in einer VM ausführen, einschließlich Docker für Mac, Docker für Windows und Docker-Computer, haben diese VMs ein CPU-Limit, das von Ihrem Laptop selbst getrennt ist. Docker wird innerhalb dieser VM ausgeführt und verwendet alle Ressourcen, die der VM selbst zugewiesen wurden. ZB mit Docker für Mac haben Sie folgendes Menü:
quelle
Möglicherweise hat Ihre Host-VM standardmäßig nur einen Kern. Daher sollten Sie Ihre VM erhöhen CPU-zählen und dann verwenden --cpuset-CPUs Option Ihre Docker Kerne zu erhöhen. Sie können die Docker-Standard-VM mit dem folgenden Befehl entfernen und dann eine weitere VM mit optionaler CPU-Anzahl und Speichergröße erstellen :
Nach diesem Schritt können Sie die Anzahl der Kerne angeben, bevor Sie Ihr Image ausführen. Dieser Befehl verwendet 4 Kerne von insgesamt 8 Kernen.
Anschließend können Sie mit diesem Befehl die Anzahl der verfügbaren Kerne in Ihrem Image überprüfen:
quelle