Anda tidak perlu catsebelum awk, anyway: hanya awk '<script>' /proc/cpuinfo, seperti itu: awk '/^processor/{n+=1}END{print n}' /proc/cpuinfo. Dan Anda masuk tanpa "minus satu".
Tomasz Gandor
Untuk menjawab pertanyaan secara langsung, pipa itu ke tail -n 1yang mengambil baris terakhir dan mencetaknya.
Perhatikan bahwa kedua hal ini akan berakhir dengan menghitung dua kali lebih banyak inti daripada yang sebenarnya ada jika Anda menggunakan sistem dengan HyperThreading (misalnya, P4, atau Core i7).
duskwuff -inactive-
24
@duskwuff: itulah tepatnya yang Anda inginkan dalam banyak kasus.
Frank Kusters
8
grep -c '^processor' /proc/cpuinfodi zsh.
Steven Lu
40
cat /proc/cpuinfo | awk '/^processor/{print $3}' | tail -1juga akan mengembalikan nomor yang salah jika nomor CPU berbasis 0.
Phazor
3
Baris pertama mengembalikan 1 Core kurang dari yang ada. Kucing / proc / cpuinfo yang lebih baik | awk '/ ^ processor / {print $ 3}' | wc -l
Mirko Ebert
650
Memproses isi /proc/cpuinfobarok tidak perlu. Gunakan nproc yang merupakan bagian dari coreutils, jadi itu harus tersedia pada kebanyakan instalasi Linux.
Command nprocmencetak jumlah unit pemrosesan yang tersedia untuk proses saat ini, yang mungkin kurang dari jumlah prosesor online.
Untuk menemukan jumlah semua inti / prosesor yang digunakan, gunakan nproc --all
apakah itu membedakan antara inti virtual dan inti fisik?
Richard
12
Ini tidak berfungsi dengan hyperthreading jika saya membutuhkan jumlah core fisik. Mengembalikan 8 pada kotak quad core i7 saya.
pratnala
1
@pratnala - jawaban teambob bermaksud memberi Anda jumlah inti fisik.
Nick Chammas
1
Di ubuntu lama saya (10.10) nproc tidak tersedia. Itu harus merupakan tambahan ish-baru.
bukzor
3
Sayangnya, nprocbukan bagian dari boot2docker
kgadek
269
Solusi paling portabel yang saya temukan adalah getconfperintah:
getconf _NPROCESSORS_ONLN
Ini berfungsi pada Linux dan Mac OS X. Manfaat lain dari ini atas beberapa pendekatan lain adalah bahwa getconf telah ada sejak lama. Beberapa mesin Linux lama yang harus saya lakukan pengembangannya tidak memiliki nprocatau lscpuperintah yang tersedia, tetapi mereka punya getconf.
Catatan editor: Sementara itu getconfutilitas adalah POSIX-mandat , spesifik _NPROCESSORS_ONLNdan _NPROCESSORS_CONFnilai-nilai yang tidak. Yang mengatakan, seperti yang dinyatakan, mereka bekerja pada platform Linux dan juga pada macOS; pada FreeBSD / PC-BSD, Anda harus menghilangkan yang terdepan _.
Ini bekerja untuk saya di Red Hat Entreprise Linux 5.4, Centos 6.5 & 7 dan Mac OSX 10.9 (Mavericks). Sepertinya ini yang paling portabel, karena lscpu tidak diinstal secara default pada sistem ini. Terima kasih!
@ BCran saya tidak dapat menemukan _NPROCESSORS_ONLNdi POSIX. Bisakah Anda menautkannya?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
3
@CiroSantilli 六四 事件 法轮功 纳米比亚 威 视 Dari github.com/gstrauss/plasma/blob/master/plasma_sysconf.c sepertinya saya salah: itu hanya opsional. "sysconf _SC_NPROCESSORS_ONLN dan _SC_NPROCESSORS_CONF tidak diperlukan oleh standar, tetapi disediakan pada berbagai platform unix dan didokumentasikan sebagai opsional oleh Open Group."
BCran
100
Kata pengantar:
The masalah dengan /proc/cpuinfojawaban berbasis adalah bahwa mereka informasi mengurai yang dimaksudkan untuk manusia konsumsi dan dengan demikian tidak memiliki format yang stabil dirancang untuk mesin parsing : format output dapat berbeda di seluruh platform dan kondisi runtime; menggunakan lscpu -pdi Linux (dan sysctldi macOS) melewati masalah itu .
getconf _NPROCESSORS_ONLNSaya getconf NPROCESSORS_ONLNtidak membedakan antara CPU logis dan fisik .
Berikut shcuplikan (POSIX-compliant) yang berfungsi di Linux dan macOS untuk menentukan jumlah - online - logis atau CPU fisik ; lihat komentar untuk detailnya.
Penggunaan lscpuuntuk Linux, dan sysctluntuk macOS.
Catatan terminologi : CPU mengacu pada unit pemrosesan terkecil seperti yang terlihat oleh OS. Core non-hyper-threading masing-masing sesuai dengan 1 CPU, sedangkan core hyper-threading mengandung lebih dari 1 (biasanya: 2) - logical - CPU.
Linux menggunakan taksonomi berikut [1] , dimulai dengan unit terkecil: simpul CPU < core < socket < book <
dengan masing-masing level terdiri dari 1 atau lebih instance dari level bawah berikutnya.
#!/bin/sh# macOS: Use `sysctl -n hw.*cpu_max`, which returns the values of # interest directly.# CAVEAT: Using the "_max" key suffixes means that the *maximum*# available number of CPUs is reported, whereas the# current power-management mode could make *fewer* CPUs # available; dropping the "_max" suffix would report the# number of *currently* available ones; see [1] below.## Linux: Parse output from `lscpu -p`, where each output line represents# a distinct (logical) CPU.# Note: Newer versions of `lscpu` support more flexible output# formats, but we stick with the parseable legacy format # generated by `-p` to support older distros, too.# `-p` reports *online* CPUs only - i.e., on hot-pluggable # systems, currently disabled (offline) CPUs are NOT# reported.# Number of LOGICAL CPUs (includes those reported by hyper-threading cores)# Linux: Simply count the number of (non-comment) output lines from `lscpu -p`, # which tells us the number of *logical* CPUs.
logicalCpuCount=$([ $(uname)='Darwin']&&
sysctl -n hw.logicalcpu_max ||
lscpu -p | egrep -v '^#'| wc -l)# Number of PHYSICAL CPUs (cores).# Linux: The 2nd column contains the core ID, with each core ID having 1 or# - in the case of hyperthreading - more logical CPUs.# Counting the *unique* cores across lines tells us the# number of *physical* CPUs (cores).
physicalCpuCount=$([ $(uname)='Darwin']&&
sysctl -n hw.physicalcpu_max ||
lscpu -p | egrep -v '^#'| sort -u -t,-k 2,4| wc -l)# Print the values.
cat <<EOF# of logical CPUs: $logicalCpuCount# of physical CPUS: $physicalCpuCount
EOF
Perhatikan bahwa sistem yang diturunkan BSD selain macOS - misalnya, FreeBSD - hanya mendukung hw.ncpukunci untuk sysctl, yang tidak digunakan lagi pada macOS; Aku tidak jelas di mana kunci baru hw.npusesuai dengan: hw.(logical|physical)cpu_[max].
Ujung topi untuk @teambob untuk membantu memperbaiki perintah fisik-CPU-count lscpu.
Peringatan : lscpu -poutput TIDAK menyertakan kolom "buku" ( manhalaman menyebutkan "buku" sebagai entitas antara soket dan simpul dalam hierarki taksonomi). Jika "buku" dalam bermain pada sistem Linux tertentu ( apakah ada yang tahu kapan dan bagaimana? ), Perintah fisik-CPU-hitung mungkin di bawah -Laporan (ini didasarkan pada asumsi bahwa lscpuID laporan yang non-unik di seluruh lebih tinggi entitas -level ; misalnya: 2 core yang berbeda dari 2 soket yang berbeda dapat memiliki ID yang sama).
Jika Anda menyimpan kode di atas sebagai, misalnya, skrip shellcpus , membuatnya dapat dieksekusi dengan chmod +x cpusdan meletakkannya di folder di Anda $PATH, Anda akan melihat output seperti berikut:
$ cpus
logical 4
physical 4
[1] Xaekai menjelaskan apa itu buku : " buku adalah modul yang menampung papan sirkuit dengan soket CPU, soket RAM, koneksi IO di sepanjang tepinya, dan pengait untuk integrasi sistem pendingin. Buku tersebut digunakan dalam mainframe IBM Info lebih lanjut: http://ewh.ieee.org/soc/cpmt/presentations/cpmt0810a.pdf "
Ya maaf Anda benar tentang perintah sortir. Saya tidak dapat menemukan informasi tentang buku di luar manual lscpu. Saya pikir ini terkait dengan NUMA en.wikipedia.org/wiki/Non-uniform_memory_access
teambob
2
Saya pikir sebagian besar solusi di sini mengabaikan mesin multi-socket, tidak seperti ini. Terima kasih!
dividebyzero
1
Dalam hal linux, ada banyak konteks di mana lscpu tidak tersedia, seperti gambar installer. Saya suka .. berharap itu ada di mana-mana.
Brian Chrisman
43
lscpu mengumpulkan formulir informasi arsitektur CPU / proc / cpuinfon dalam format yang dapat dibaca manusia:
# lscpuArchitecture: x86_64
CPU op-mode(s):32-bit,64-bitByteOrder:LittleEndian
CPU(s):8On-line CPU(s) list:0-7Thread(s) per core:1Core(s) per socket:4
CPU socket(s):2
NUMA node(s):1Vendor ID:GenuineIntel
CPU family:6Model:15Stepping:7
CPU MHz:1866.669BogoMIPS:3732.83Virtualization: VT-x
L1d cache:32K
L1i cache:32K
L2 cache:4096K
NUMA node0 CPU(s):0-7
itu "^ core id" untuk total core fisik atau hanya p-core pada satu prosesor?
Richard
1
ada satu baris id inti per inti fisik yang unik dalam sistem. Saya tidak tahu apakah angka akan mulai dari nol untuk prosesor fisik kedua, ...
lunixbochs
1
jika Anda memiliki lebih dari satu prosesor fisik, Anda juga perlu melihat "fisik id".
Anne
Baris pertama tidak bekerja untuk saya. Ini bekerja untuk saya. cat /proc/cpuinfo | awk '/^processor/{print $3}'| wc -ldan menunjukkan nomor yang benar.
jaylweb
11
Untuk jumlah total inti fisik:
grep '^core id'/proc/cpuinfo |sort -u|wc -l
Pada mesin multi-socket (atau selalu), gandakan hasil di atas dengan jumlah soket:
Menggunakan getconf memang cara yang paling portabel, namun variabel memiliki nama yang berbeda di BSD dan Linux untuk getconf, jadi Anda harus menguji keduanya, seperti yang disarankan intinya:
https://gist.github.com/jj1bdx/5746298
(juga termasuk perbaikan Solaris menggunakan ksh)
Adapun nproc, itu adalah bagian dari GNU Coreutils, jadi tidak tersedia di BSD secara default. Ia menggunakan sysconf () juga setelah beberapa metode lain.
Di tambang, ini mengembalikan jumlah hyperthreads. Saya juga perlu tahu jumlah inti fisik dan jumlah soket.
user2465201
OK - perintah yang sama persis dengan hw.physicalcpu menghasilkan jumlah inti. Belum yakin tentang jumlah soket ... Ada juga jumlah cpu "logis" dan "aktif", tapi saya tidak yakin apa artinya itu.
user2465201
Pembaruan cepat - ini sepertinya tidak terlalu portabel. Saya mencobanya pada kotak Linux, dan sepertinya hanya membaca direktori / proc, yang semuanya berbeda untuk sistem Linux daripada Mac - misalnya, tidak ada subdirektori hw. Yang sedang berkata, Anda masih dapat menguraikan / proc / cpuinfo
Hitung jumlah CPU logis unik seperti yang digunakan oleh kernel Linux. The -ppilihan menghasilkan output untuk mudah parsing dan kompatibel dengan versi sebelumnya lscpu.
Untuk menentukan jumlah unit pemrosesan yang tersedia (belum tentu sama dengan jumlah core). Ini sadar hipertensi.
nproc
Saya tidak ingin terlalu jauh ke lubang kelinci, tetapi Anda juga dapat menentukan jumlah prosesor yang dikonfigurasi (sebagai lawan dari prosesor yang hanya tersedia / online) melalui getconf _NPROCESSORS_CONF. Untuk menentukan jumlah total CPU (offline dan online) Anda ingin menguraikan output lscpu -ap.
ini jawaban yang benar jika Anda menginginkan inti fisik.
Dinesh
3
Saya juga berpikir cat /proc/cpuinfoakan memberi saya jawaban yang benar, namun saya baru-baru ini melihat bahwa sistem ARM quad core Cortex A53 saya hanya menunjukkan satu inti. Tampaknya / proc / cpuinfo hanya menampilkan core aktif, sedangkan:
cat /sys/devices/system/cpu/present
adalah ukuran yang lebih baik dari apa yang ada di sana. Anda juga bisa
cat /sys/devices/system/cpu/online
untuk melihat core mana yang online, dan
cat /sys/devices/system/cpu/offline
untuk melihat core mana yang offline. The online, offlinedan presentsysfs entri mengembalikan indeks dari CPU, sehingga nilai kembali dari 0hanya berarti inti 0, sedangkan nilai kembali dari 1-3sarana core 1,2, dan 3.
-1, ini kembali 0pada satu inti dengan Opteron 4170 HE, tetapi kembali 4pada delapan kotak inti dengan Opteron 3280. ... sebagian dari diriku benar-benar berharap one-liner ini bekerja!
Ini bekerja dengan baik. Ketika saya mencoba jawaban pertama saya mendapatkan 3 CPU sebagai output. Saya tahu bahwa saya memiliki 4 CPU pada sistem jadi saya hanya melakukan grepuntuk prosesor dan hasilnya terlihat seperti ini:
Versi: Intel (R) Xeon (R) CPU E5-2667 v4 @ 3.20GHz
Versi: Intel (R) Xeon (R) CPU E5-2667 v4 @ 3.20GHz
Yang mana jumlah soket yang benar - mencari E5-2667tahu saya memiliki masing-masing soket 8 cores, jadi gandakan dan berakhir dengan 16 coresdi seberang 2 sockets.
Di mana lscpumemberi saya 20 CPUs- yang sama sekali tidak benar - tidak yakin mengapa. (Hal yang sama berlaku untuk cat /proc/cpu- berakhir dengan 20.
cat
sebelumawk
, anyway: hanyaawk '<script>' /proc/cpuinfo
, seperti itu:awk '/^processor/{n+=1}END{print n}' /proc/cpuinfo
. Dan Anda masuk tanpa "minus satu".tail -n 1
yang mengambil baris terakhir dan mencetaknya.Jawaban:
akan menghitung jumlah baris yang dimulai dengan "prosesor" di
/proc/cpuinfo
Untuk sistem dengan hyper-threading, Anda bisa menggunakannya
yang harus kembali (misalnya)
8
(sedangkan perintah di atas akan kembali16
)sumber
grep -c '^processor' /proc/cpuinfo
di zsh.cat /proc/cpuinfo | awk '/^processor/{print $3}' | tail -1
juga akan mengembalikan nomor yang salah jika nomor CPU berbasis 0.Memproses isi
/proc/cpuinfo
barok tidak perlu. Gunakan nproc yang merupakan bagian dari coreutils, jadi itu harus tersedia pada kebanyakan instalasi Linux.Command
nproc
mencetak jumlah unit pemrosesan yang tersedia untuk proses saat ini, yang mungkin kurang dari jumlah prosesor online.Untuk menemukan jumlah semua inti / prosesor yang digunakan, gunakan
nproc --all
Di mesin 8-core saya:
sumber
nproc
bukan bagian dari boot2dockerSolusi paling portabel yang saya temukan adalah
getconf
perintah:Ini berfungsi pada Linux dan Mac OS X. Manfaat lain dari ini atas beberapa pendekatan lain adalah bahwa getconf telah ada sejak lama. Beberapa mesin Linux lama yang harus saya lakukan pengembangannya tidak memiliki
nproc
ataulscpu
perintah yang tersedia, tetapi mereka punyagetconf
.Catatan editor: Sementara itu
getconf
utilitas adalah POSIX-mandat , spesifik_NPROCESSORS_ONLN
dan_NPROCESSORS_CONF
nilai-nilai yang tidak. Yang mengatakan, seperti yang dinyatakan, mereka bekerja pada platform Linux dan juga pada macOS; pada FreeBSD / PC-BSD, Anda harus menghilangkan yang terdepan_
.sumber
_NPROCESSORS_ONLN
di POSIX. Bisakah Anda menautkannya?Kata pengantar:
The masalah dengan
/proc/cpuinfo
jawaban berbasis adalah bahwa mereka informasi mengurai yang dimaksudkan untuk manusia konsumsi dan dengan demikian tidak memiliki format yang stabil dirancang untuk mesin parsing : format output dapat berbeda di seluruh platform dan kondisi runtime; menggunakanlscpu -p
di Linux (dansysctl
di macOS) melewati masalah itu .getconf _NPROCESSORS_ONLN
Sayagetconf NPROCESSORS_ONLN
tidak membedakan antara CPU logis dan fisik .Berikut
sh
cuplikan (POSIX-compliant) yang berfungsi di Linux dan macOS untuk menentukan jumlah - online - logis atau CPU fisik ; lihat komentar untuk detailnya.Penggunaan
lscpu
untuk Linux, dansysctl
untuk macOS.Catatan terminologi : CPU mengacu pada unit pemrosesan terkecil seperti yang terlihat oleh OS. Core non-hyper-threading masing-masing sesuai dengan 1 CPU, sedangkan core hyper-threading mengandung lebih dari 1 (biasanya: 2) - logical - CPU.
Linux menggunakan taksonomi berikut [1] , dimulai dengan unit terkecil: simpul
CPU < core < socket < book < dengan masing-masing level terdiri dari 1 atau lebih instance dari level bawah berikutnya.
[1] dokumentasi macOS
sysctl (3)
Perhatikan bahwa sistem yang diturunkan BSD selain macOS - misalnya, FreeBSD - hanya mendukung
hw.ncpu
kunci untuksysctl
, yang tidak digunakan lagi pada macOS; Aku tidak jelas di mana kunci baruhw.npu
sesuai dengan:hw.(logical|physical)cpu_[max]
.Ujung topi untuk @teambob untuk membantu memperbaiki perintah fisik-CPU-count
lscpu
.Peringatan :
lscpu -p
output TIDAK menyertakan kolom "buku" (man
halaman menyebutkan "buku" sebagai entitas antara soket dan simpul dalam hierarki taksonomi). Jika "buku" dalam bermain pada sistem Linux tertentu ( apakah ada yang tahu kapan dan bagaimana? ), Perintah fisik-CPU-hitung mungkin di bawah -Laporan (ini didasarkan pada asumsi bahwalscpu
ID laporan yang non-unik di seluruh lebih tinggi entitas -level ; misalnya: 2 core yang berbeda dari 2 soket yang berbeda dapat memiliki ID yang sama).Jika Anda menyimpan kode di atas sebagai, misalnya, skrip shell
cpus
, membuatnya dapat dieksekusi denganchmod +x cpus
dan meletakkannya di folder di Anda$PATH
, Anda akan melihat output seperti berikut:[1] Xaekai menjelaskan apa itu buku : " buku adalah modul yang menampung papan sirkuit dengan soket CPU, soket RAM, koneksi IO di sepanjang tepinya, dan pengait untuk integrasi sistem pendingin. Buku tersebut digunakan dalam mainframe IBM Info lebih lanjut: http://ewh.ieee.org/soc/cpmt/presentations/cpmt0810a.pdf "
sumber
lscpu
mengumpulkan formulir informasi arsitektur CPU / proc / cpuinfon dalam format yang dapat dibaca manusia:Lihat juga /unix/468766/understanding-output-of-lscpu .
sumber
Ini berhasil untuk saya.
tail -nX
memungkinkan Anda untuk hanya mengambil garis X terakhir.Jika Anda mengalami hiphreading, ini seharusnya berfungsi untuk meraih jumlah inti fisik .
sumber
cat /proc/cpuinfo | awk '/^processor/{print $3}'| wc -l
dan menunjukkan nomor yang benar.Untuk jumlah total inti fisik:
Pada mesin multi-socket (atau selalu), gandakan hasil di atas dengan jumlah soket:
@ mklement0 memiliki jawaban yang cukup bagus di bawah ini menggunakan lscpu. Saya telah menulis versi yang lebih ringkas dalam komentar
sumber
Anda juga dapat menggunakan Python! Untuk mendapatkan jumlah inti fisik:
Untuk mendapatkan jumlah core ber-hiphread:
sumber
Solusi lintas platform untuk Linux, MacOS, Windows:
sumber
Inilah cara yang saya gunakan untuk menghitung jumlah core fisik yang sedang online di Linux:
atau singkatnya:
Contoh (1 soket):
Contoh (2 soket):
Contoh (4 soket):
sumber
Menggunakan getconf memang cara yang paling portabel, namun variabel memiliki nama yang berbeda di BSD dan Linux untuk getconf, jadi Anda harus menguji keduanya, seperti yang disarankan intinya: https://gist.github.com/jj1bdx/5746298 (juga termasuk perbaikan Solaris menggunakan ksh)
Saya pribadi menggunakan:
Dan jika Anda menginginkan ini dengan python, Anda bisa menggunakan syscall getconf menggunakan dengan mengimpor modul os:
Adapun
nproc
, itu adalah bagian dari GNU Coreutils, jadi tidak tersedia di BSD secara default. Ia menggunakan sysconf () juga setelah beberapa metode lain.sumber
Jika Anda ingin melakukan ini agar berfungsi di linux dan OS X, Anda dapat melakukannya:
sumber
Ini sangat sederhana. Cukup gunakan perintah ini:
sumber
CPU(s):
.Anda dapat menggunakan salah satu metode berikut untuk menentukan jumlah inti CPU fisik .
Hitung jumlah id inti unik (kira-kira setara dengan
grep -P '^core id\t' /proc/cpuinfo | sort -u | wc -l
).awk '/^core id\t/ {cores[$NF]++} END {print length(cores)}' /proc/cpuinfo
Lipat gandakan jumlah inti per soket dengan jumlah soket.
lscpu | awk '/^Core\(s\) per socket:/ {cores=$NF}; /^Socket\(s\):/ {sockets=$NF}; END{print cores*sockets}'
Hitung jumlah CPU logis unik seperti yang digunakan oleh kernel Linux. The
-p
pilihan menghasilkan output untuk mudah parsing dan kompatibel dengan versi sebelumnyalscpu
.lscpu -p | awk -F, '$0 !~ /^#/ {cores[$1]++} END {print length(cores)}'
Hanya untuk mengulangi apa yang dikatakan orang lain, ada sejumlah properti terkait.
Untuk menentukan jumlah prosesor yang tersedia:
Untuk menentukan jumlah unit pemrosesan yang tersedia (belum tentu sama dengan jumlah core). Ini sadar hipertensi.
Saya tidak ingin terlalu jauh ke lubang kelinci, tetapi Anda juga dapat menentukan jumlah prosesor yang dikonfigurasi (sebagai lawan dari prosesor yang hanya tersedia / online) melalui
getconf _NPROCESSORS_CONF
. Untuk menentukan jumlah total CPU (offline dan online) Anda ingin menguraikan outputlscpu -ap
.sumber
Saya juga berpikir
cat /proc/cpuinfo
akan memberi saya jawaban yang benar, namun saya baru-baru ini melihat bahwa sistem ARM quad core Cortex A53 saya hanya menunjukkan satu inti. Tampaknya / proc / cpuinfo hanya menampilkan core aktif, sedangkan:cat /sys/devices/system/cpu/present
adalah ukuran yang lebih baik dari apa yang ada di sana. Anda juga bisa
cat /sys/devices/system/cpu/online
untuk melihat core mana yang online, dan
cat /sys/devices/system/cpu/offline
untuk melihat core mana yang offline. The
online
,offline
danpresent
sysfs entri mengembalikan indeks dari CPU, sehingga nilai kembali dari0
hanya berarti inti 0, sedangkan nilai kembali dari1-3
sarana core 1,2, dan 3.Lihat https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu
sumber
Yang berikut ini akan memberi Anda jumlah inti "nyata" pada sistem yang di-hyperhread dan non-hyperthread. Setidaknya itu berhasil di semua tes saya.
sumber
0
pada satu inti dengan Opteron 4170 HE, tetapi kembali4
pada delapan kotak inti dengan Opteron 3280. ... sebagian dari diriku benar-benar berharap one-liner ini bekerja!Bukan halaman web saya, tetapi perintah ini dari http://www.ixbrian.com/blog/?p=64&cm_mc_uid=89402252817914508279022&cm_mc_sid_50200000=1450827902 bekerja dengan baik untuk saya di centos. Ini akan menunjukkan CPU yang sebenarnya bahkan ketika hyperthreading diaktifkan.
cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed s/physical/\\nphysical/g | grep -v ^$ | sort | uniq | wc -l
sumber
Hitung "id inti" per metode "id fisik" menggunakan awk dengan mundur pada "prosesor" hitung jika "id inti" tidak tersedia (seperti raspberry)
sumber
Ini bekerja dengan baik. Ketika saya mencoba jawaban pertama saya mendapatkan 3 CPU sebagai output. Saya tahu bahwa saya memiliki 4 CPU pada sistem jadi saya hanya melakukan
grep
untuk prosesor dan hasilnya terlihat seperti ini:sumber
memberi saya
Yang mana jumlah soket yang benar - mencari
E5-2667
tahu saya memiliki masing-masing soket8 cores
, jadi gandakan dan berakhir dengan16 cores
di seberang2 sockets
.Di mana
lscpu
memberi saya20 CPUs
- yang sama sekali tidak benar - tidak yakin mengapa. (Hal yang sama berlaku untukcat /proc/cpu
- berakhir dengan20
.sumber
Lebih cepat, tanpa garpu
Ini bekerja dengan hampir semua kulit.
Agar tetap kompatibel dengan kulit, berlari, busyboxdan yang lainnya, saya telah menggunakan
ncore=$((ncore+1))
sebagai gantinya((ncore++))
.pesta Versi: kapan
sumber
Jika Anda bisa menggunakan Python, maka
numexpr
modul memiliki fungsi untuk ini:juga ini:
Untuk menanyakan informasi ini dari prompt perintah, gunakan:
Atau sederhananya dimungkinkan untuk mendapatkan info ini dari
multiprocessing.cpu_count()
fungsiAtau bahkan lebih mudah digunakan
os.cpu_count()
sumber
cpu_count
salah, tidak mengembalikan jumlah core tetapi hanya jumlah hyperthreads pada CPU IntelJika Anda hanya ingin menghitung inti fisik, perintah ini melakukannya untuk saya.
Cukup mendasar, tetapi tampaknya menghitung inti fisik aktual, mengabaikan perhitungan logis
sumber
Python 3 juga menyediakan beberapa cara sederhana untuk mendapatkannya:
4
4
sumber
Gunakan kueri di bawah ini untuk mendapatkan detail inti
sumber
Ringkasan: untuk mendapatkan CPU fisik lakukan ini:
untuk mendapatkan CPU fisik dan logis lakukan ini:
/proc
<< ini adalah sumber emas dari setiap info yang Anda butuhkan tentang proses dan/proc/cpuinfo
<< adalah sumber emas dari setiap informasi CPU.sumber