Saya menjalankan perintah berikut untuk mendapatkan jumlah prosesor / inti di Linux:
cat /proc/cpuinfo | grep processor | wc -l
Ini berfungsi tetapi tidak terlihat elegan. Bagaimana saran Anda untuk memperbaikinya?
Saya menjalankan perintah berikut untuk mendapatkan jumlah prosesor / inti di Linux:
cat /proc/cpuinfo | grep processor | wc -l
Ini berfungsi tetapi tidak terlihat elegan. Bagaimana saran Anda untuk memperbaikinya?
Jawaban:
nproc adalah apa yang Anda cari.
Lebih lanjut di sini: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
nprocapakah ada di VM ubuntu saya, tetapi tidak di mesin berbasis RedHat 5.5 saya.
nproc --alluntuk semua Unit Pemrosesan yang diinstal. Tanpa --all, nprochanya memperlihatkan Unit Pemrosesan yang tersedia untuk proses saat ini. Baca halaman manual untuk lebih jelasnya. MMV.
Alat paling sederhana hadir dengan glibc dan disebut getconf:
$ getconf _NPROCESSORS_ONLN
4
nproc, ini berfungsi (secara default) di mac os x.
_NPROCESSORS_ONLN(atau apa pun dengan cpu, proc, dll) tercantum dalam outputnya. Saya berharap karena ini adalah alat posix yang berfungsi di Linux / Solaris jadi saya tidak perlu menggunakan percabangan.
Saya pikir metode yang Anda berikan adalah yang paling portabel di Linux. Alih-alih memijah catdan wcmemproses yang tidak perlu , Anda dapat mempersingkatnya sedikit:
$ grep --count ^processor /proc/cpuinfo
2
Jika Anda ingin melakukannya agar berfungsi di linux dan OS X, Anda dapat melakukan:
CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)
psrinfo -psebagai gantinya
Pada kernel yang lebih baru, Anda juga dapat menggunakan /sys/devices/system/cpu/antarmuka untuk mendapatkan lebih banyak informasi:
$ 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
Lihat dokumen resmi untuk informasi lebih lanjut tentang apa arti semua ini.
onlinefilenya, lebih sederhana daripada yang dilakukan nproc)
Ketika seseorang menanyakan "jumlah prosesor / inti" ada 2 jawaban yang diminta. Jumlah "prosesor" akan menjadi nomor fisik yang dipasang di soket pada mesin.
Jumlah "inti" akan menjadi inti fisik. Core hyperthreaded (virtual) tidak akan disertakan (setidaknya menurut saya). Sebagai seseorang yang menulis banyak program dengan kumpulan utas, Anda benar-benar perlu mengetahui jumlah inti fisik vs inti / hyperthreads. Karena itu, Anda dapat memodifikasi skrip berikut untuk mendapatkan jawaban yang Anda butuhkan.
#!/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"
Hasil pada mesin dengan 2 model prosesor fisik Xeon X5650 masing-masing dengan 6 inti fisik yang juga mendukung hyperthreading:
Type model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Processors 2
Physical cores 12
Including hyperthreading cores 24
Pada mesin dengan prosesor 2 mdeol Xeon E5472 masing-masing dengan 4 inti fisik yang tidak mendukung hyperthreading
Type model name : Intel(R) Xeon(R) CPU E5472 @ 3.00GHz
Processors 2
Physical cores 8
Including hyperthreading cores 8
The lscpu(1)perintah yang disediakan oleh util-linux proyek juga mungkin berguna:
$ 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
Ini untuk mereka yang menginginkan cara portabel untuk menghitung inti cpu di * bsd, * nix atau solaris (belum diuji di aix dan hp-ux tetapi seharusnya berfungsi). Itu selalu berhasil untuk saya.
dmesg | \
egrep 'cpu[. ]?[0-9]+' | \
sed 's/^.*\(cpu[. ]*[0-9]*\).*$/\1/g' | \
sort -u | \
wc -l | \
tr -d ' '
solaris grep& egreptidak memiliki -oopsi jadi seddigunakan sebagai gantinya.