web-dev-qa-db-ja.com

Dockerコンテナで許可されているCPUの数を数える

私の具体的なシナリオは次のとおりです。特定のcpusetでDockerコンテナーを起動します。

docker run --cpuset-cpus="0-2" # ...

そのコンテナー内で、エントリポイントとしてシェルスクリプトを実行し、そのシェルスクリプトはある時点でmakeを実行します。良い仕事(-j)がいくつになるか知りたいのですが。もちろん、割り当てられたCPUの数を環境に渡すこともできますが、それを自動的に検出する方法がはるかに望ましいでしょう。

taskset -c -p $$またはcat /proc/self/status | grep Cpus_allowed_listを使用して現在のプロセスのCpus_allowedを取得できることはわかっていますが、許可されているCPUの実際の数を取得する方法がわかりません。これらのコマンドの出力を解析したり、Cpus_allowedマスクをいじったりすることは避けたいのですが、オプションがない場合はそれを行います。

14
pmr

nprocシェルスクリプトツールを使用できます。

したがって、問題のmakeコマンドラインでは-j$(nproc)になります。

19
Brian