Wie erreicht man Prozessoraffinität in Containern?

Wie erreicht man Prozessoraffinität in Containern?

Ich sehe, dass es mit Kubernetes möglich ist, die Knotenaffinität für bestimmte Workloads festzulegen. Ich frage mich, ob es in den verschiedenen Containertechnologien wie Docker, Rocket usw. Möglichkeiten gibt, Prozesse an Kerne zu binden? Oder ob dies in Multitenant-Umgebungen überhaupt möglich ist? Vielleicht würde es eine Bare-Metal-Konfiguration erfordern?

Antwort1

Wenn Ihr System SMP (Symmetric Multiprocessing) mit einer Kombination aus mehreren physischen CPUs, CPU-Kernen und logischen CPUs unterstützt, können Sie Docker-Container bestimmten CPU-Ressourcen zuweisen.

Beispielbefehle für CPU-Affinität mit Docker-Containern

Die hier gezeigten Beispiele behandeln die Zuweisung des Docker-Containers mycontainer zu bestimmten CPU-Ressourcen, wenn die Container mit dem Befehl docker run erstellt werden. Beim Ausführen von Befehlen müssen Sie Ihren Docker-Containernamen und die CPU-Komponentennummern entsprechend Ihrer Umgebung ersetzen.

Dieser Befehl weist den Docker-Container mycontainer der ersten CPU (CPU0) zu:

# docker run --cpuset 0 /bin/bash mycontainer

Es können mehrere CPUs angegeben werden. Dieser Befehl weist den Docker-Container mycontainer den CPUs 0 und 1 zu:

# docker run --cpuset 0,1 /bin/bash mycontainer

Es kann ein CPU-Bereich angegeben werden. Dieser Befehl weist den Docker-Container mycontainer den CPUs 0, 1 und 2 zu:

# docker run --cpuset 0-2 /bin/bash mycontainer

verwandte Informationen