オンラインプロセッサよりも利用可能な処理ユニットの数が少ない。

オンラインプロセッサよりも利用可能な処理ユニットの数が少ない。

UbuntuベースのLinuxで実行するとnprocコマンドを実行すると、2 が印刷されます。しかし、実行するとnproc --all8が印刷されます。

これは、8つのオンラインプロセッサのうち2つしか使用できないという意味ですか? 8つのオンラインプロセッサをすべて使用可能にする方法は?構成で制御されますか?

答え1

実行中の同じシェルで次のコマンドを実行できますかnproc

cat /proc/$$/limits

結果:

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             15795                15795                processes
Max open files            65536                65536                files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       15795                15795                signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

このコマンドを使用して、オフラインのCPUがあるかどうかを確認できますか?

grep "" /sys/devices/system/cpu/cpu*/online

結果:

# grep "" /sys/devices/system/cpu/cpu*/online
/sys/devices/system/cpu/cpu1/online:1
/sys/devices/system/cpu/cpu2/online:1
/sys/devices/system/cpu/cpu3/online:1
/sys/devices/system/cpu/cpu4/online:1
/sys/devices/system/cpu/cpu5/online:1
/sys/devices/system/cpu/cpu6/online:1
/sys/devices/system/cpu/cpu7/online:1

CPUがオフラインの場合(たとえばCPU3)、そのCPUをオンにしてnproc再実行できます。

echo 1 > /sys/devices/system/cpu/cpu3/online

すべて開くには、以下を試してください。

for x in /sys/devices/system/cpu/cpu*/online; do
  echo 1 >"$x"
done

次の8つのコマンドを1つずつ独立して試すことができます(permission deniedtryを使用している場合sudo):

echo 1 > /sys/devices/system/cpu/cpu1/online
echo 1 > /sys/devices/system/cpu/cpu2/online
echo 1 > /sys/devices/system/cpu/cpu3/online
echo 1 > /sys/devices/system/cpu/cpu4/online
echo 1 > /sys/devices/system/cpu/cpu5/online
echo 1 > /sys/devices/system/cpu/cpu6/online
echo 1 > /sys/devices/system/cpu/cpu7/online

関連情報