Bagaimana cara mendapatkan jumlah CPU / core di Linux dari baris perintah?

540

Saya memiliki skrip ini, tetapi saya tidak tahu cara mendapatkan elemen terakhir dalam hasil cetak:

cat /proc/cpuinfo | awk '/^processor/{print $3}'

Elemen terakhir adalah jumlah CPU, minus 1.

Richard
sumber
9
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.
Fábio Santos

Jawaban:

659
grep -c ^processor /proc/cpuinfo     

akan menghitung jumlah baris yang dimulai dengan "prosesor" di /proc/cpuinfo

Untuk sistem dengan hyper-threading, Anda bisa menggunakannya

grep ^cpu\\scores /proc/cpuinfo | uniq |  awk '{print $4}' 

yang harus kembali (misalnya) 8(sedangkan perintah di atas akan kembali 16)

unbeli
sumber
42
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

Di mesin 8-core saya:

$ nproc --all
8
uckelman
sumber
8
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 getconf utilitas adalah POSIX-mandat , spesifik _NPROCESSORS_ONLNdan _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 _.

mshildt
sumber
11
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!
big_gie
1
Saya setuju. Ini cukup portabel.
bukzor
1
@ 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

[1] dokumentasi macOSsysctl (3)

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 "

mklement0
sumber
1
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:

# lscpu


Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    1
Core(s) per socket:    4
CPU socket(s):         2
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 15
Stepping:              7
CPU MHz:               1866.669
BogoMIPS:              3732.83
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
NUMA node0 CPU(s):     0-7

Lihat juga /unix/468766/understanding-output-of-lscpu .

Sh4msi
sumber
13

Ini berhasil untuk saya. tail -nXmemungkinkan Anda untuk hanya mengambil garis X terakhir.

cat /proc/cpuinfo | awk '/^processor/{print $3}' | tail -1

Jika Anda mengalami hiphreading, ini seharusnya berfungsi untuk meraih jumlah inti fisik .

grep "^core id" /proc/cpuinfo | sort -u | wc -l
lunixbochs
sumber
1
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:

echo $(($(grep "^physical id" /proc/cpuinfo | awk '{print $4}' | sort -un | tail -1)+1))

@ mklement0 memiliki jawaban yang cukup bagus di bawah ini menggunakan lscpu. Saya telah menulis versi yang lebih ringkas dalam komentar

teambob
sumber
10

Anda juga dapat menggunakan Python! Untuk mendapatkan jumlah inti fisik:

$ python -c "import psutil; print(psutil.cpu_count(logical=False))"
4

Untuk mendapatkan jumlah core ber-hiphread:

$ python -c "import psutil; print(psutil.cpu_count(logical=True))"
8
ostrokach
sumber
Dengan python 2.7.15 perintah ini tidak mencetak apa pun. Dalam REPL mereka lakukan.
Vytenis Bivainis
1
@VytenisBivainis Terima kasih, saya memperbaiki jawaban saya!
ostrokach
9

Solusi lintas platform untuk Linux, MacOS, Windows:

CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu || echo "$NUMBER_OF_PROCESSORS")
Sergey
sumber
9

Inilah cara yang saya gunakan untuk menghitung jumlah core fisik yang sedang online di Linux:

lscpu --online --parse=Core,Socket | grep --invert-match '^#' | sort --unique | wc --lines

atau singkatnya:

lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l

Contoh (1 soket):

> lscpu
...
CPU(s):                28
Thread(s) per core:    2
Core(s) per socket:    14
Socket(s):             1
....
> lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l
14

Contoh (2 soket):

> lscpu
...
CPU(s):                56
Thread(s) per core:    2
Core(s) per socket:    14
Socket(s):             2
...
> lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l
28

Contoh (4 soket):

> lscpu
...
CPU(s):                64
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             4
...
> lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l
32
Fravadona
sumber
Bekerja dan menangani banyak soket
jbo5112
Ini jawaban terbaik.
Jorma Rebane
7

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:

$ getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1

Dan jika Anda menginginkan ini dengan python, Anda bisa menggunakan syscall getconf menggunakan dengan mengimpor modul os:

$ python -c 'import os; print os.sysconf(os.sysconf_names["SC_NPROCESSORS_ONLN"]);'

Adapun nproc, itu adalah bagian dari GNU Coreutils, jadi tidak tersedia di BSD secara default. Ia menggunakan sysconf () juga setelah beberapa metode lain.

mmu_man
sumber
6

Jika Anda ingin melakukan ini agar berfungsi di linux dan OS X, Anda dapat melakukannya:

CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)
tim_yates
sumber
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
user2465201
5

Ini sangat sederhana. Cukup gunakan perintah ini:

lscpu
bhanu mantri
sumber
Anda harus menerima output dari ini untuk CPU(s):.
Robert
3

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 -ppilihan menghasilkan output untuk mudah parsing dan kompatibel dengan versi sebelumnya lscpu.

    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:

getconf _NPROCESSORS_ONLN
grep -cP '^processor\t' /proc/cpuinfo

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.

Enam
sumber
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.

Lihat https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu

Aman Manchanda
sumber
2

Yang berikut ini akan memberi Anda jumlah inti "nyata" pada sistem yang di-hyperhread dan non-hyperthread. Setidaknya itu berhasil di semua tes saya.

awk -F: '/^physical/ && !ID[$2] { P++; ID[$2]=1 }; /^cpu cores/ { CORES=$2 };  END { print CORES*P }' /proc/cpuinfo
foomiser
sumber
-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!
zamnuts
1

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

Chaim Geretz
sumber
+1, lebih lama dari solusi dengan "lscpu -p = Core, Socket" tetapi berfungsi langsung parsing / proc / cpuinfo, tidak perlu untuk lscpu.
Fravadona
1

Hitung "id inti" per metode "id fisik" menggunakan awk dengan mundur pada "prosesor" hitung jika "id inti" tidak tersedia (seperti raspberry)

echo $(awk '{ if ($0~/^physical id/) { p=$NF }; if ($0~/^core id/) { cores[p$NF]=p$NF }; if ($0~/processor/) { cpu++ } } END { for (key in cores) { n++ } } END { if (n) {print n} else {print cpu} }' /proc/cpuinfo)
Totaly FuRy
sumber
1
cat /proc/cpuinfo | grep processor

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:

[root@theservername ~]# cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3
Gary Liggons
sumber
1
 dmidecode  | grep -i cpu | grep Version

memberi saya

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.

Hank42
sumber
1

Lebih cepat, tanpa garpu

Ini bekerja dengan hampir semua .

ncore=0
while read line ;do
    [ "$line" ] && [ -z "${line%processor*}" ] && ncore=$((ncore+1))
  done </proc/cpuinfo
echo $ncore
4

Agar tetap kompatibel dengan , , dan yang lainnya, saya telah menggunakan ncore=$((ncore+1))sebagai gantinya ((ncore++)).

Versi: kapan

ncore=0
while read -a line ;do
    [ "$line" = "processor" ] && ((ncore++))
  done </proc/cpuinfo
echo $ncore
4
F. Hauri
sumber
Posting ini terkait dengan jawaban ini untuk String yang berisi di Bash !
F. Hauri
1

Jika Anda bisa menggunakan Python, maka numexprmodul memiliki fungsi untuk ini:

In [5]: import numexpr as ne

In [6]: ne.detect_number_of_cores()
Out[6]: 8

juga ini:

In [7]: ne.ncores
Out[7]: 8

Untuk menanyakan informasi ini dari prompt perintah, gunakan:

# runs whatever valid Python code given as a string with `-c` option
$ python -c "import numexpr as ne; print(ne.ncores)"
8

Atau sederhananya dimungkinkan untuk mendapatkan info ini dari multiprocessing.cpu_count()fungsi

$ python -c "import multiprocessing; print(multiprocessing.cpu_count())"

Atau bahkan lebih mudah digunakan os.cpu_count()

$ python -c "import os; print(os.cpu_count())"
kmario23
sumber
1
Apakah ada cara membuat ini berfungsi sebagai perintah dengan python? Misalnya saya mencoba python -m numexpr.ncores tetapi itu tidak berhasil.
MonsieurBeilto
1
@MonsieurBeilto Silakan lihat jawaban yang diperbarui!
kmario23
Hitungan yang dikembalikan cpu_countsalah, tidak mengembalikan jumlah core tetapi hanya jumlah hyperthreads pada CPU Intel
Antti Haapala
1

Jika Anda hanya ingin menghitung inti fisik, perintah ini melakukannya untuk saya.

lscpu -e | tail -n +2 | tr -s " " | cut -d " " -f 4 | sort | uniq | wc -w

Cukup mendasar, tetapi tampaknya menghitung inti fisik aktual, mengabaikan perhitungan logis

Campbell Taylor-Fairweather
sumber
0

Python 3 juga menyediakan beberapa cara sederhana untuk mendapatkannya:

$ python3 -c "import os; print(os.cpu_count());"

4

$ python3 -c "import multiprocessing; print(multiprocessing.cpu_count())"

4

Lê Tư Thành
sumber
Ini mengembalikan 8 untuk saya ketika saya memiliki 4 core dengan 2 utas pada masing-masing ...
Antti Haapala
0

Gunakan kueri di bawah ini untuk mendapatkan detail inti

[oracle@orahost](TESTDB)$ grep -c ^processor /proc/cpuinfo
8
Srikant Patra
sumber
0

Ringkasan: untuk mendapatkan CPU fisik lakukan ini:

grep 'core id' /proc/cpuinfo | sort -u

untuk mendapatkan CPU fisik dan logis lakukan ini:

grep -c ^processor /proc/cpuinfo

/proc << ini adalah sumber emas dari setiap info yang Anda butuhkan tentang proses dan

/proc/cpuinfo << adalah sumber emas dari setiap informasi CPU.

Syed
sumber
Penghitungan CPU fisik tidak bekerja dengan komputer multi-socket; untuk itu Anda perlu mengaitkan setiap 'id inti' dengan 'id fisik' nya.
Fravadona