Dockerコンテナーで許可されているCPUの数をカウントする


14

私の具体的なシナリオは次のとおりです。特定の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マスクをいじったりすることは避けたいのですが、オプションがない場合はそれを行います。


1
nproc-利用可能な処理装置の数を印刷します
ブライアン

@ブライアンそれは簡単すぎました。
pmr

回答:


19

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

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


1
「docker run --rm --cpus 2 debian nproc」-> 8?
エヴァン・ベン

2
@EvanBenn --cpus="2"は処理ユニットの数を制限せず、と同等-cpu-period="100000" and --cpu-quota="200000"です。
ブライアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.