온라인 프로세서보다 사용 가능한 처리 장치 수가 적습니다.

온라인 프로세서보다 사용 가능한 처리 장치 수가 적습니다.

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개 명령을 하나씩 독립적으로 시도해 볼 수 있습니까( 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

관련 정보