명령줄의 프로세서/코어 수
Linux에서 프로세서/코어 수를 가져오기 위해 다음 명령을 실행하고 있습니다.
cat /proc/cpuinfo | grep processor | wc -l
효과는 있지만 우아해 보이지는 않습니다.어떻게 개선할 것을 제안하시겠습니까?
nproc
당신이 찾고 있는 것입니다.
더 많은 정보: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
가장 간단한 도구는 glibc와 함께 제공되며 다음과 같습니다.getconf
:
$ getconf _NPROCESSORS_ONLN
4
저는 당신이 제시한 방법이 리눅스에서 가장 휴대하기 쉽다고 생각합니다.불필요한 산란 대신cat
그리고.wc
프로세스를 조금 줄일 수 있습니다.
$ grep --count ^processor /proc/cpuinfo
2
Linux 및 OS X에서 작동하도록 이 작업을 수행하려면 다음 작업을 수행할 수 있습니다.
CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)
최신 커널에서는 다음을 사용할 수도 있습니다./sys/devices/system/cpu/
자세한 정보를 보려면 인터페이스:
$ ls /sys/devices/system/cpu/
cpu0 cpufreq kernel_max offline possible present release
cpu1 cpuidle modalias online power probe uevent
$ cat /sys/devices/system/cpu/kernel_max
255
$ cat /sys/devices/system/cpu/offline
2-63
$ cat /sys/devices/system/cpu/possible
0-63
$ cat /sys/devices/system/cpu/present
0-1
$ cat /sys/devices/system/cpu/online
0-1
이 모든 것이 의미하는 바에 대한 자세한 내용은 공식 문서를 참조하십시오.
누군가 "프로세서/코어 수"를 요청하면 두 가지 답변이 요청됩니다."프로세서"의 수는 기계의 소켓에 설치된 물리적 수가 됩니다.
"코어"의 수는 물리적 코어입니다.하이퍼스레딩(가상) 코어는 포함되지 않을 것입니다(적어도 제 생각에는).스레드 풀을 사용하여 많은 프로그램을 작성하는 사용자는 코어/하이퍼스레드 대비 물리적 코어 수를 알아야 합니다.즉, 다음 스크립트를 수정하여 필요한 답변을 얻을 수 있습니다.
#!/bin/bash
MODEL=`cat /cpu/procinfo | grep "model name" | sort | uniq`
ALL=`cat /proc/cpuinfo | grep "bogo" | wc -l`
PHYSICAL=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`
CORES=`cat /proc/cpuinfo | grep "cpu cores" | sort | uniq | cut -d':' -f2`
PHY_CORES=$(($PHYSICAL * $CORES))
echo "Type $MODEL"
echo "Processors $PHYSICAL"
echo "Physical cores $PHY_CORES"
echo "Including hyperthreading cores $ALL"
하이퍼스레딩도 지원하는 6개의 물리적 코어가 각각 2개의 모델 Xeon X5650 물리적 프로세서가 있는 시스템의 결과:
Type model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Processors 2
Physical cores 12
Including hyperthreading cores 24
하이퍼스레딩을 지원하지 않는 물리적 코어가 각각 4개씩 있는 2mdeol Xeon E5472 프로세서가 있는 시스템
Type model name : Intel(R) Xeon(R) CPU E5472 @ 3.00GHz
Processors 2
Physical cores 8
Including hyperthreading cores 8
그lscpu(1)
util-linux 프로젝트에서 제공하는 명령도 유용할 수 있습니다.
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 58
Model name: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
Stepping: 9
CPU MHz: 3406.253
CPU max MHz: 3600.0000
CPU min MHz: 1200.0000
BogoMIPS: 5787.10
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 4096K
NUMA node0 CPU(s): 0-3
이는 *bsd, *nix 또는 Solaris에서 CPU 코어를 세는 휴대용 방법을 원하는 사용자를 위한 것입니다(AIX 및 hp-ux에서 테스트되지 않았지만 작동해야 함).그것은 항상 저에게 효과가 있었습니다.
dmesg | \
egrep 'cpu[. ]?[0-9]+' | \
sed 's/^.*\(cpu[. ]*[0-9]*\).*$/\1/g' | \
sort -u | \
wc -l | \
tr -d ' '
솔라리스grep
&egrep
가지고 있지 않은-o
선택사항 sosed
대신 사용됩니다.
하이퍼스레딩 코어 수를 계산하지 않는 또 다른 단일 라인:
lscpu | awk -F ":" '/Core/ { c=$2; }; /Socket/ { print c*$2 }'
OS 독립적인 방법이 필요한 경우 윈도우즈 및 리눅스에서 작동합니다.파이썬 사용
$ python -c 'import multiprocessing as m; print m.cpu_count()'
16
이를 수행하는 또 다른 휴대용 방법은 다음과 같습니다.
node -p 'os.cpus().length'
언급URL : https://stackoverflow.com/questions/19619582/number-of-processors-cores-in-command-line
'programing' 카테고리의 다른 글
SQL Server 데이터베이스 복원 오류: 지정한 캐스트가 잘못되었습니다. (SqlManager)UI) (0) | 2023.05.29 |
---|---|
Internet Explorer 엔진을 사용할 수 없기 때문에 응답 내용을 구문 분석할 수 없습니다. (0) | 2023.05.29 |
PostgreSQL - 데이터베이스 이름 변경 (0) | 2023.05.29 |
Mac에서 프로세스 잠금 포트 3000 찾기(및 제거) (0) | 2023.05.29 |
gitlab에서 권한을 가져오는 중 거부됨(공개 키) (0) | 2023.05.29 |