Làm thế nào để có được số lượng CPU / lõi trong Linux từ dòng lệnh?


540

Tôi có tập lệnh này, nhưng tôi không biết làm thế nào để có được phần tử cuối cùng trong bản in:

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

Phần tử cuối cùng phải là số lượng CPU, trừ đi 1.


9
Bạn không cần phải cattrước awk, dù sao: chỉ awk '<script>' /proc/cpuinfo, như vậy: awk '/^processor/{n+=1}END{print n}' /proc/cpuinfo. Và bạn vào trong mà không "trừ một".
Tomasz Gandor

Để trả lời câu hỏi trực tiếp, đặt ống dẫn đến tail -n 1dòng cuối cùng và in nó.
Fábio Santos

Câu trả lời:


659
grep -c ^processor /proc/cpuinfo     

sẽ đếm số lượng dòng bắt đầu bằng "bộ xử lý" trong /proc/cpuinfo

Đối với các hệ thống có siêu phân luồng, bạn có thể sử dụng

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

cái nào sẽ trả về (ví dụ) 8(trong khi lệnh trên sẽ trả về 16)


42
Lưu ý rằng cả hai thứ này sẽ kết thúc với số lượng lõi gấp đôi so với thực tế tồn tại nếu bạn đang sử dụng hệ thống siêu phân luồng (ví dụ: P4 hoặc Core i7).
duskwuff -inactive-

24
@duskwuff: đó chính xác là những gì bạn muốn trong hầu hết các trường hợp.
Frank Kuster

8
grep -c '^processor' /proc/cpuinfotrên zsh.
Steven Lu

40
cat /proc/cpuinfo | awk '/^processor/{print $3}' | tail -1cũng sẽ trả về số sai nếu số CPU dựa trên 0.
Phazor

3
Dòng đầu tiên trả về 1 Core ít hơn hiện có. Mèo / Proc / cpuinfo tốt hơn | awk '/ ^ bộ xử lý / {in $ 3}' | wc -l
Mirko Ebert

650

Xử lý các nội dung của /proc/cpuinfolà không cần thiết baroque. Sử dụng nproc là một phần của coreutils, vì vậy nó sẽ có sẵn trên hầu hết các bản cài đặt Linux.

Lệnh nprocin số lượng đơn vị xử lý có sẵn cho quy trình hiện tại, có thể ít hơn số lượng bộ xử lý trực tuyến.

Để tìm số lượng tất cả các lõi / bộ xử lý đã cài đặt, hãy sử dụng nproc --all

Trên máy 8 lõi của tôi:

$ nproc --all
8

8
Liệu nó có phân biệt giữa lõi ảo và lõi vật lý?
Richard

12
Điều này không hoạt động với siêu phân luồng nếu tôi cần số lượng lõi vật lý. Trả về 8 trên hộp i7 lõi ​​tứ của tôi.
pratnala

1
@pratnala - câu trả lời của teambob cung cấp cho bạn số lượng lõi vật lý.
Nick Chammas

1
Trên nproc cũ của tôi (10.10) không có sẵn. Nó phải là một bổ sung mới.
bukzor

3
Thật không may, nprockhông phải là một phần của boot2docker
kgadek

269

Giải pháp di động nhất mà tôi đã tìm thấy là getconflệnh:

getconf _NPROCESSORS_ONLN

Điều này hoạt động trên cả Linux và Mac OS X. Một lợi ích khác của việc này so với một số phương pháp khác là getconf đã xuất hiện từ lâu. Một số máy Linux cũ hơn mà tôi phải phát triển không có sẵn nprochoặc lscpucó sẵn các lệnh, nhưng chúng có getconf.

Chú ý: Trong khi các getconf tiện ích được POSIX-bắt buộc , cụ thể _NPROCESSORS_ONLN_NPROCESSORS_CONF giá trị thì không. Điều đó nói rằng, như đã nêu, họ làm việc trên các nền tảng Linux cũng như trên macOS; trên FreeBSD / PC-BSD, bạn phải bỏ qua hàng đầu _.


11
Điều này làm việc với tôi trên Red Hat Entreprise Linux 5.4, Centos 6.5 & 7 và Mac OSX 10.9 (Mavericks). Có vẻ như đây là thiết bị di động nhất, vì lscpu không được cài đặt theo mặc định trên các hệ thống này. Cảm ơn!
big_gie

1
Tôi đồng ý. Điều này là khá di động.
bukzor


1
@BCran Tôi không thể tìm thấy _NPROCESSORS_ONLNtrong POSIX. Bạn có thể liên kết với nó?
Ciro Santilli 郝海东 冠状 病 事件

3
@CiroSantilli 事件 法轮功 威 Từ github.com/gstrauss/plasma/blob/master/plasma_sysconf.c có vẻ như tôi đã sai: đó chỉ là tùy chọn. "sysconf _SC_NPROCESSORS_ONLN và _SC_NPROCESSORS_CONF không được yêu cầu theo tiêu chuẩn, nhưng được cung cấp trên nhiều nền tảng unix và được tài liệu tùy chọn bởi Open Group."
BCran

100

Lời nói đầu:

  • Các vấn đề với các /proc/cpuinfocâu trả lời dựa trên là họ thông tin phân tích cái đĩa dành cho người tiêu dùng và do đó thiếu định dạng ổn định được thiết kế cho máy phân tích cú pháp : định dạng đầu ra có thể khác nhau giữa các nền tảng và điều kiện thời gian chạy; sử dụng lscpu -ptrên Linux (và sysctltrên macOS) bỏ qua vấn đề đó .

  • getconf _NPROCESSORS_ONLN/ getconf NPROCESSORS_ONLNkhông phân biệt giữa CPU logicvật lý .


Đây là shđoạn mã (tuân thủ POSIX) hoạt động trên Linux và macOS để xác định số lượng CPU - trực tuyến - logic hoặc vật lý ; xem ý kiến ​​để biết chi tiết

Sử dụng lscpucho Linux và sysctlcho macOS.

Thuật ngữ lưu ý : CPU đề cập đến đơn vị xử lý nhỏ nhất mà HĐH nhìn thấy. Mỗi lõi không siêu phân luồng tương ứng với 1 CPU, trong khi các lõi siêu phân luồng chứa nhiều hơn 1 (thông thường: 2) - logic - CPU.
Linux sử dụng các phân loại sau [1] , bắt đầu với các đơn vị nhỏ nhất:
CPU < lõi < ổ cắm < cuốn sách < nút
với mỗi cấp bao gồm 1 hoặc nhiều trường hợp của các cấp thấp hơn tiếp theo.

#!/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] tài liệu macOSsysctl (3)

Lưu ý rằng các hệ thống có nguồn gốc BSD khác với macOS - ví dụ: FreeBSD - chỉ hỗ trợ hw.ncpukhóa cho sysctl, không được dùng trên macOS; Tôi không rõ khóa nào mới hw.nputương ứng với : hw.(logical|physical)cpu_[max].

Mẹo đội mũ tới @teambob để giúp sửa lscpulệnh đếm CPU-vật lý .

Hãy cẩn thận : lscpu -pđầu ra KHÔNG bao gồm cột "sách" ( mantrang đề cập đến "sách" là một thực thể giữa ổ cắm và nút trong phân cấp phân loại). Nếu "sách" đang phát trên một hệ thống Linux nhất định ( có ai biết khi nào và bằng cách nào không? ), Lệnh đếm CPU vật lý có thể được báo cáo lại (điều này dựa trên giả định rằng lscpubáo cáo ID không duy nhất trên cao hơn thực thể -level , ví dụ: 2 lõi khác nhau từ 2 ổ cắm khác nhau có thể có cùng một ID).


Nếu bạn lưu mã ở trên như, giả sử, shell scriptcpus , làm cho nó có thể thực thi được chmod +x cpusvà đặt nó vào thư mục trong của bạn $PATH, bạn sẽ thấy đầu ra như sau:

$ cpus
logical  4
physical 4

[1] Xaekai làm sáng tỏ cuốn sách là gì: " cuốn sách là mô-đun chứa bảng mạch với ổ cắm CPU, ổ cắm RAM, kết nối IO dọc theo cạnh và móc để tích hợp hệ thống làm mát. Chúng được sử dụng trong các máy tính lớn của IBM Thông tin khác: http://ewh.ieee.org/soc/cpmt/presentations/cpmt0810a.pdf "


1
Có xin lỗi bạn là chính xác về lệnh sắp xếp. Tôi không thể tìm thấy bất kỳ thông tin nào về sách ngoài sách hướng dẫn lscpu. Tôi nghĩ rằng nó có liên quan đến NUMA en.wikipedia.org/wiki/Non-uniform_memory_access
teambob

2
Tôi nghĩ rằng hầu hết các giải pháp ở đây đều bỏ qua các máy đa ổ cắm, không giống như máy này. Cảm ơn!
splititherzero

1
Về mặt linux, có nhiều bối cảnh trong đó lscpu không khả dụng, chẳng hạn như hình ảnh trình cài đặt. Tôi thích nó .. ước gì nó có mặt ở khắp nơi.
Brian Chrisman

43

lscpu tập hợp biểu mẫu thông tin kiến ​​trúc CPU / Proc / cpuinfon ở định dạng có thể đọc được của con người:

# 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

Xem thêm /unix/468766/under Hiểu-output-of-lscpu .


13

Điều này làm việc cho tôi. tail -nXcho phép bạn chỉ lấy các dòng X cuối cùng.

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

Nếu bạn có siêu phân luồng, điều này sẽ hoạt động để lấy số lượng lõi vật lý .

grep "^core id" /proc/cpuinfo | sort -u | wc -l

1
là "^ core id" cho tổng số lõi vật lý hay chỉ là lõi p trên một bộ xử lý?
Richard

1
có một dòng id lõi trên mỗi lõi vật lý duy nhất trong hệ thống. Tôi không biết liệu các con số có bắt đầu từ 0 cho bộ xử lý vật lý thứ hai hay không, tuy nhiên ...
lunixbochs

1
nếu bạn có nhiều bộ xử lý vật lý, bạn cũng sẽ cần xem "id vật lý".
Anne

Dòng đầu tiên không làm việc cho tôi. Điều này làm việc cho tôi. cat /proc/cpuinfo | awk '/^processor/{print $3}'| wc -lvà hiển thị số chính xác.
jaylweb

11

Đối với tổng số lõi vật lý:

grep '^core id' /proc/cpuinfo |sort -u|wc -l

Trên các máy có nhiều ổ cắm (hoặc luôn luôn), nhân kết quả trên với số lượng ổ cắm:

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

@ mkuity0 có một câu trả lời khá hay dưới đây bằng lscpu. Tôi đã viết một phiên bản ngắn gọn hơn trong các ý kiến


10

Bạn cũng có thể sử dụng Python! Để có được số lượng lõi vật lý:

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

Để có được số lượng lõi siêu phân luồng:

$ python -c "import psutil; print(psutil.cpu_count(logical=True))"
8

Với python 2.7.15, các lệnh này không in bất cứ thứ gì. Trong REPL họ làm.
Vytenis Bivainis

1
@VytenisBivainis Cảm ơn, tôi đã sửa câu trả lời của mình!
Ostrokach

9

Giải pháp đa nền tảng cho Linux, MacOS, Windows:

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

9

Đây là cách tôi sử dụng để đếm số lượng lõi vật lý đang trực tuyến trên Linux:

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

hoặc nói ngắn gọn:

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

Ví dụ (1 ổ cắm):

> 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

Ví dụ (2 ổ cắm):

> 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

Ví dụ (4 ổ cắm):

> 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

Hoạt động và xử lý nhiều ổ cắm
jbo5112

Đây là câu trả lời tốt nhất.
Jorma Rebane

7

Sử dụng getconf thực sự là cách dễ mang theo nhất, tuy nhiên biến này có các tên khác nhau trong BSD và Linux để getconf, vì vậy bạn phải kiểm tra cả hai, vì ý chính này gợi ý: https://gist.github.com/jj1bdx/5746298 (cũng bao gồm một bản sửa lỗi Solaris sử dụng ksh)

Cá nhân tôi sử dụng:

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

Và nếu bạn muốn điều này trong python, bạn chỉ có thể sử dụng các tiện ích được sử dụng bằng cách sử dụng mô-đun os:

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

Về phần nproc, nó là một phần của GNU Coreutils, do đó, không có sẵn trong BSD theo mặc định. Nó cũng sử dụng sysconf () sau một số phương thức khác.


6

Nếu bạn muốn làm điều này để nó hoạt động trên linux và OS X, bạn có thể làm:

CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)

Đối với tôi, điều này trả về số lượng siêu phân luồng. Tôi cũng cần biết số lượng lõi vật lý và số lượng ổ cắm.
user2465201

OK - lệnh chính xác tương tự với hw.physicalcpu mang lại số lượng cốt lõi. Chưa chắc chắn về số lượng ổ cắm ... Ngoài ra còn có số lượng cpu "hợp lý" và "hoạt động", nhưng tôi không chắc điều đó có nghĩa là gì.
user2465201

Cập nhật nhanh - điều này dường như không dễ mang theo. Tôi đã thử nó trên một hộp Linux và dường như nó chỉ đọc các thư mục / Proc, tất cả đều khác với hệ thống Linux so với Mac - ví dụ, không có thư mục con hw. Điều đó đang được nói, bạn vẫn có thể phân tích / Proc / cpuinfo
user2465201

5

Nó rất đơn giản. Chỉ cần sử dụng lệnh này:

lscpu

Bạn cần grep đầu ra của cái này cho CPU(s):.
Robert

3

Bạn có thể sử dụng một trong các phương pháp sau để xác định số lượng lõi CPU vật lý .

  • Đếm số lượng id lõi duy nhất (gần tương đương với grep -P '^core id\t' /proc/cpuinfo | sort -u | wc -l).

    awk '/^core id\t/ {cores[$NF]++} END {print length(cores)}' /proc/cpuinfo

  • Nhân số lượng 'lõi trên mỗi ổ cắm' với số lượng ổ cắm.

    lscpu | awk '/^Core\(s\) per socket:/ {cores=$NF}; /^Socket\(s\):/ {sockets=$NF}; END{print cores*sockets}'

  • Đếm số lượng CPU logic duy nhất được sử dụng bởi nhân Linux. Các -ptùy chọn tạo ra để dễ dàng phân tích và tương thích với các phiên bản trước của lscpu.

    lscpu -p | awk -F, '$0 !~ /^#/ {cores[$1]++} END {print length(cores)}'


Chỉ cần nhắc lại những gì người khác đã nói, có một số thuộc tính liên quan.

Để xác định số lượng bộ xử lý có sẵn:

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

Để xác định số lượng đơn vị xử lý có sẵn (không nhất thiết phải giống với số lượng lõi). Đây là siêu nhận thức.

nproc

Tôi không muốn đi quá xa lỗ thỏ, nhưng bạn cũng có thể xác định số lượng bộ xử lý được cấu hình (trái ngược với bộ xử lý trực tuyến / có sẵn đơn giản) thông qua getconf _NPROCESSORS_CONF. Để xác định tổng số CPU (ngoại tuyến và trực tuyến) bạn muốn phân tích đầu ra của lscpu -ap.


Đây là câu trả lời chính xác nếu bạn muốn lõi vật lý.
Dinesh

3

Tôi cũng nghĩ cat /proc/cpuinfosẽ cho tôi câu trả lời chính xác, tuy nhiên gần đây tôi thấy rằng hệ thống lõi tứ ARM Cortex A53 của tôi chỉ hiển thị một lõi đơn. Có vẻ như / Proc / cpuinfo chỉ hiển thị các lõi hoạt động, trong khi:

cat /sys/devices/system/cpu/present

là một biện pháp tốt hơn của những gì ở đó. Bạn cũng có thể

cat /sys/devices/system/cpu/online

để xem lõi nào đang trực tuyến và

cat /sys/devices/system/cpu/offline

để xem lõi nào đang offline. Các mục online, offlinepresentsysfs trả về chỉ mục của CPUS, do đó, giá trị trả về 0chỉ có nghĩa là lõi 0, trong khi giá trị trả về của 1-3phương tiện là lõi 1,2 và 3.

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


2

Sau đây sẽ cung cấp cho bạn số lượng lõi "thực" trên cả hệ thống siêu phân luồng và không siêu phân luồng. Ít nhất nó đã làm việc trong tất cả các thử nghiệm của tôi.

awk -F: '/^physical/ && !ID[$2] { P++; ID[$2]=1 }; /^cpu cores/ { CORES=$2 };  END { print CORES*P }' /proc/cpuinfo

-1, điều này trả 0về một lõi đơn với Opteron 4170 HE, nhưng trả 4về hộp tám lõi với Opteron 3280. ... một phần trong tôi thực sự mong muốn lớp lót này hoạt động!
zamnuts

1

Không phải trang web của tôi, nhưng lệnh này từ http://www.ixbrian.com/blog/?p=64&cm_mc_uid=89402252817914508279022&cm_mc_sid_50200000=1450827902 hoạt động độc đáo với tôi trên centos. Nó sẽ hiển thị cpus thực tế ngay cả khi siêu phân luồng được kích hoạt.

cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed s/physical/\\nphysical/g | grep -v ^$ | sort | uniq | wc -l


+1, dài hơn giải pháp với "lscpu -p = Core, Socket" nhưng hoạt động trực tiếp phân tích cú pháp / Proc / cpuinfo, không cần lscpu.
Fravadona

1

Đếm "id lõi" trên mỗi phương thức "id vật lý" bằng cách sử dụng awk với "bộ xử lý" dự phòng nếu "id lõi" không khả dụng (như mâm xôi)

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)

1
cat /proc/cpuinfo | grep processor

Điều này làm việc tốt. Khi tôi thử câu trả lời đầu tiên, tôi nhận được 3 CPU là đầu ra. Tôi biết rằng tôi có 4 CPU trên hệ thống nên tôi mới làm một grepbộ xử lý và đầu ra trông như thế này:

[root@theservername ~]# cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3

1
 dmidecode  | grep -i cpu | grep Version

đưa cho tôi

Phiên bản: CPU Intel (R) Xeon (R) E5-2667 v4 @ 3.20GHz

Phiên bản: CPU Intel (R) Xeon (R) E5-2667 v4 @ 3.20GHz

Đó là số lượng ổ cắm chính xác - tra cứu E5-2667cho tôi biết mỗi ổ cắm có 8 cores, do đó nhân lên và kết thúc với 16 coresngang 2 sockets.

Nơi lscpucho tôi 20 CPUs- điều đó hoàn toàn không chính xác - không biết tại sao. (cùng đi cho cat /proc/cpu- kết thúc với 20.


1

Nhanh hơn, không cần ngã ba

Công việc này với tất cả .

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

Để tương thích với , , và những người khác, tôi đã sử dụng ncore=$((ncore+1))thay vì ((ncore++)).

phiên bản

ncore=0
while read -a line ;do
    [ "$line" = "processor" ] && ((ncore++))
  done </proc/cpuinfo
echo $ncore
4

Bài đăng này được liên kết với câu trả lời này với Chuỗi chứa trong Bash !
F. Hauri

1

Nếu bạn có thể sử dụng Python thì không sao, numexprmô-đun có chức năng này:

In [5]: import numexpr as ne

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

cũng thế này:

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

Để truy vấn thông tin này từ dấu nhắc lệnh, hãy sử dụng:

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

Hoặc đơn giản là có thể lấy thông tin này từ multiprocessing.cpu_count()chức năng

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

Hoặc thậm chí đơn giản hơn là sử dụng os.cpu_count()

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

1
Có cách nào làm cho công việc này như là một lệnh trong python? Ví dụ: tôi đã thử python -m numexpr.ncores nhưng không được.
MonsieurBeilto

1
@MonsieurBeilto Xin hãy xem câu trả lời được cập nhật!
kmario23

Số lượng được trả về cpu_countlà sai, nó không trả về số lượng lõi mà chỉ là số lượng siêu phân luồng trên CPU Intel
Antti Haapala

1

Nếu bạn chỉ muốn đếm lõi vật lý, lệnh này đã làm điều đó cho tôi.

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

Khá cơ bản, nhưng dường như đếm các lõi vật lý thực tế, bỏ qua số lượng logic


0

Python 3 cũng cung cấp một vài cách đơn giản để có được nó:

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

4

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

4


Điều này không trả về 8 cho tôi khi tôi có 4 lõi với 2 luồng trên mỗi ...
Antti Haapala

0

Sử dụng truy vấn dưới đây để có được chi tiết cốt lõi

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

0

Tóm tắt: để có được CPU vật lý làm điều này:

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

để có được CPU vật lýlogic làm điều này:

grep -c ^processor /proc/cpuinfo

/proc << đây là nguồn vàng của bất kỳ thông tin nào bạn cần về các quy trình và

/proc/cpuinfo << là nguồn vàng của bất kỳ thông tin CPU nào.


Đếm CPU vật lý không hoạt động với máy tính nhiều ổ cắm; cho rằng bạn cần liên kết từng 'id lõi' với 'id vật lý' của nó.
Fravadona
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.