Để có được một bức ảnh hoàn chỉnh, bạn cần nhìn vào số lượng luồng trên mỗi lõi, lõi trên mỗi ổ cắm và ổ cắm . Nếu bạn nhân các số này, bạn sẽ nhận được số lượng CPU trên hệ thống của mình.
CPU = Chủ đề trên mỗi lõi X lõi trên mỗi ổ cắm X socket
CPU là những gì bạn thấy khi bạn chạy htop
(những thứ này không tương đương với CPU vật lý).
Đây là một ví dụ từ một máy tính để bàn:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Và một máy chủ:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 32
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
Đầu ra của nproc
tương ứng với số lượng CPU từ lscpu
. Đối với máy tính để bàn ở trên, điều này phải phù hợp với 8 CPU được báo cáo bởi lscpu
:
$ nproc --all
8
Đầu ra /proc/cpuinfo
phải khớp với thông tin này, ví dụ trên hệ thống máy tính để bàn ở trên, chúng ta có thể thấy có 8 bộ xử lý (CPU) và 4 lõi (id lõi 0-3):
$ grep -E 'processor|core id' /proc/cpuinfo
processor : 0
core id : 0
processor : 1
core id : 0
processor : 2
core id : 1
processor : 3
core id : 1
processor : 4
core id : 2
processor : 5
core id : 2
processor : 6
core id : 3
processor : 7
core id : 3
Các cpu cores
báo cáo /proc/cpuinfo
tương ứng với các Core(s) per socket
báo cáo bởi lscpu
. Đối với máy tính để bàn ở trên, điều này phải phù hợp với 4 Core cho mỗi ổ cắm được báo cáo bởi lscpu:
$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores : 4
Để trả lời cụ thể câu hỏi của bạn, bạn cho biết bạn có bao nhiêu lõi bằng cách nhân số lõi bạn có trên mỗi ổ cắm với số lượng ổ cắm bạn có.
Lõi = Lõi trên mỗi ổ cắm X Ổ cắm
Đối với các hệ thống ví dụ trên máy tính để bàn có 4 lõi:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 4
Trong khi máy chủ có 16:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 16
Một tiện ích hữu ích khác là dmidecode
đầu ra cho mỗi thông tin ổ cắm. Trong trường hợp hệ thống máy chủ được liệt kê ở trên, chúng tôi hy vọng sẽ thấy 8 lõi trên mỗi ổ cắm và 16 luồng trên mỗi ổ cắm:
$ sudo dmidecode -t 4 | grep -E 'Socket Designation|Count'
Socket Designation: CPU1
Core Count: 8
Thread Count: 16
Socket Designation: CPU2
Core Count: 8
Thread Count: 16
Các lscpu
lệnh có một số tùy chọn hữu ích mà bạn có thể muốn kiểm tra, ví dụ:
$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'
Xem man lscpu
để biết chi tiết.
Tóm tắt:
- Bạn cần lưu ý về ổ cắm, lõi và chủ đề
- Bạn cần cẩn thận với thuật ngữ CPU vì nó có nghĩa là những thứ khác nhau trong các bối cảnh khác nhau