私の具体的なシナリオは次のとおりです。特定の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
マスクをいじったりすることは避けたいのですが、オプションがない場合はそれを行います。
@ブライアンそれは簡単すぎました。
—
pmr
nproc
-利用可能な処理装置の数を印刷します