コンテナ内でプロセッサの親和性を実現するにはどうすればよいでしょうか?

コンテナ内でプロセッサの親和性を実現するにはどうすればよいでしょうか?

Kubernetes では、特定のワークロードに対してノード アフィニティを設定できることがわかりました。docker、rocket などのさまざまなコンテナー テクノロジに、プロセスをコアに固定できる機能があるかどうか、またはマルチテナント環境でもこれが可能かどうか疑問に思っています。おそらく、ベア メタル セットアップを意味するのでしょうか。

答え1

システムが複数の物理 CPU、CPU コア、論理 CPU の組み合わせによる SMP (対称型マルチプロセッシング) をサポートしている場合は、Docker コンテナを特定の CPU リソースに割り当てることができます。

Docker コンテナの CPU アフィニティのコマンド例

ここで示す例は、docker run コマンドを使用してコンテナーを作成するときに、mycontainer Docker コンテナーを特定の CPU リソースに割り当てる方法を説明しています。コマンドを実行するときは、環境に合わせて Docker コンテナー名と CPU コンポーネント番号を置き換える必要があります。

このコマンドは、mycontainer Docker コンテナを最初の CPU (CPU0) に割り当てます。

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

複数の CPU を指定できます。このコマンドは、mycontainer Docker コンテナを CPU 0 と 1 に割り当てます。

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

CPU の範囲を指定できます。このコマンドは、mycontainer Docker コンテナを CPU 0、1、2 に割り当てます。

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

関連情報