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