Làm thế nào để tôi biết bộ xử lý nào là lõi vật lý?


15

Tôi đã có một Intel i7 2700k ở đây và tôi muốn biết làm thế nào tôi có thể biết bộ xử lý nào là vật lý và ảo (ví dụ: siêu phân luồng). Tôi hiện đang chạy tập lệnh Conky để hiển thị nhịp độ, tần số và tải CPU của mình, nhưng tôi không chắc chắn rằng mình đã làm đúng:

tuyệt vời

Tôi đã viết kịch bản của riêng mình để lấy nhiệt độ và tần số i7z, nhưng chúng chỉ tương ứng với các lõi vật lý. Tôi hiện đang hiển thị từng lõi như thế này:

${cpu cpu1} ${lua display_temp 0} ${lua display_load 0}
${cpu cpu2}
${cpu cpu3} ${lua display_temp 1} ${lua display_load 1}
${cpu cpu4}
# ...

Tôi không chắc chắn rằng điều này đúng, bởi vì tải và nhiệt độ đôi khi tôi thấy. Trong /proc/cpuinfo, lõi được sắp xếp như thế nào? Đầu tiên tất cả vật lý sau đó tất cả ảo? Mỗi lõi vật lý sau đó (các) lõi ảo của nó? Chúng được sắp xếp như thế nào?

Câu trả lời:


16

Bạn có thể biết về từng lõi bộ xử lý bằng cách kiểm tra từng mục cpuinfo:

processor       : 0
[...]
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0

processor       : 1
[...]
physical id     : 0
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 2 

processor       : 2
[...]
physical id     : 0
siblings        : 8
core id         : 2
cpu cores       : 4
apicid          : 4 

processor       : 3
[...]
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 6

processor       : 4
[...]
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 1

[and so on]

physical idhiển thị định danh của bộ xử lý. Trừ khi bạn có thiết lập đa bộ xử lý (có hai bộ xử lý vật lý riêng biệt trong một máy), nó sẽ luôn là 0.

siblings hiển thị số lượng bộ xử lý được gắn vào cùng bộ xử lý vật lý.

core idhiển thị định danh của lõi hiện tại, ra tổng cộng cpu cores. Bạn có thể sử dụng thông tin này để tương quan bộ xử lý ảo nào đi vào một lõi đơn.

apicid(và original apicid) hiển thị số lượng bộ xử lý (ảo), như được đưa ra bởi bios.

Lưu ý rằng có 8 anh chị em và 4 lõi, vì vậy có 2 bộ xử lý ảo cho mỗi lõi. Không có sự phân biệt giữa "ảo" hay "thực" trong siêu phân luồng. Nhưng sử dụng thông tin này, bạn có thể liên kết bộ xử lý nào từ cùng một lõi.


5

Hệ /systhống tập tin giữ một cái nhìn tổng quan tốt đẹp về thông tin này. Dưới đây là một ví dụ từ hộp tứ giác SMP với Hyperthreading:

# grep . /sys/devices/system/cpu/cpu{,1}?/topology/thread_siblings | tr : \\t | sed 's,^,    ,'
/sys/devices/system/cpu/cpu0/topology/thread_siblings   00000000,00000101
/sys/devices/system/cpu/cpu1/topology/thread_siblings   00000000,00000202
/sys/devices/system/cpu/cpu2/topology/thread_siblings   00000000,00000404
/sys/devices/system/cpu/cpu3/topology/thread_siblings   00000000,00000808
/sys/devices/system/cpu/cpu4/topology/thread_siblings   00000000,00001010
/sys/devices/system/cpu/cpu5/topology/thread_siblings   00000000,00002020
/sys/devices/system/cpu/cpu6/topology/thread_siblings   00000000,00004040
/sys/devices/system/cpu/cpu7/topology/thread_siblings   00000000,00008080
/sys/devices/system/cpu/cpu8/topology/thread_siblings   00000000,00000101
/sys/devices/system/cpu/cpu9/topology/thread_siblings   00000000,00000202
/sys/devices/system/cpu/cpu10/topology/thread_siblings  00000000,00000404
/sys/devices/system/cpu/cpu11/topology/thread_siblings  00000000,00000808
/sys/devices/system/cpu/cpu12/topology/thread_siblings  00000000,00001010
/sys/devices/system/cpu/cpu13/topology/thread_siblings  00000000,00002020
/sys/devices/system/cpu/cpu14/topology/thread_siblings  00000000,00004040
/sys/devices/system/cpu/cpu15/topology/thread_siblings  00000000,00008080

Nội dung giống hệt nhau biểu thị chủ đề của cùng một lõi. I E

  • cpu0 / cpu8
  • cpu1 / cpu9
  • Vân vân.

Có thông tin tương tự trong core_siblingstệp giả, cùng với thông tin cấu trúc liên kết nhiều hơn.


3

Nếu bạn thấy htcờ '' /proc/cpuinfothì bạn đã bật siêu phân luồng và mỗi lõi thực được chia thành nhiều luồng, không có khái niệm nào về luồng thực và luồng ảo: cả hai đều thực sự ảo.

Những gì bạn có thể muốn điều tra là so sánh các lõi và ổ cắm, sử dụng physical idđịnh danh cấu trúc liên kết '' để nhóm các lõi với nhau.


Các htlá cờ duy nhất chỉ ra rằng đa luồng (HTT) được hỗ trợ bởi CPU - không nếu nó được kích hoạt hay không. Ngay cả sau đó, nó không thể luôn luôn được dựa vào, ví dụ, nó chỉ ra một cách sai lầm rằng i5 i5-6500 hỗ trợ HTT: ark.intel.com/content/www/us/en/ark/products/88184/ Khăn
Anthony G - công lý cho Monica

1

Câu trả lời trước rất thú vị.

Sau khi googling, tôi tìm thấy một số chủ đề liên quan:

Ở liên kết cuối cùng, tập lệnh python không hoạt động khi máy chủ của bạn có nhiều ID vật lý. Tôi đã cố gắng sửa đổi nó với một điều kiện khác nhau ở cuối:

Thay đổi:

if p > 0:

đến

if p % 2 == 1:

Nhưng nó không hoạt động như mong đợi, dựa trên tin nhắn trước đó. Nhân tiện, bạn có thể làm một cái gì đó toàn diện hơn:

grep . /sys/devices/system/cpu/cpu{,1}?/topology/thread_siblings | tr : \\\t | sed -r 's,^,\s\s\s\s,'

với:

for file in /sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list; do echo -n "$file "; cat $file; done |sort -k2 -n

[...]

Điều thú vị trên máy chủ nhiều lõi với khả năng siêu phân luồng là phân phối các lõi logic trên phần cứng.

Chẳng hạn, trên một trong các máy tính của tôi (48 lõi logic, 2 bộ xử lý vật lý, 24 (12 * 2) 'lõi thực' (vì vậy, cũng có 24 lõi ảo)):

for file in /sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list; do echo -n "$file "; cat $file; done |sort -k2 -n

 /sys/devices/system/cpu/cpu0/topology/thread_siblings_list 0,24
 /sys/devices/system/cpu/cpu24/topology/thread_siblings_list 0,24
 /sys/devices/system/cpu/cpu1/topology/thread_siblings_list 1,25
 /sys/devices/system/cpu/cpu25/topology/thread_siblings_list 1,25
 /sys/devices/system/cpu/cpu26/topology/thread_siblings_list 2,26
 /sys/devices/system/cpu/cpu2/topology/thread_siblings_list 2,26
 /sys/devices/system/cpu/cpu27/topology/thread_siblings_list 3,27
 /sys/devices/system/cpu/cpu3/topology/thread_siblings_list 3,27
 /sys/devices/system/cpu/cpu28/topology/thread_siblings_list 4,28
 /sys/devices/system/cpu/cpu4/topology/thread_siblings_list 4,28
 /sys/devices/system/cpu/cpu29/topology/thread_siblings_list 5,29
 /sys/devices/system/cpu/cpu5/topology/thread_siblings_list 5,29
 /sys/devices/system/cpu/cpu30/topology/thread_siblings_list 6,30
 /sys/devices/system/cpu/cpu6/topology/thread_siblings_list 6,30
 /sys/devices/system/cpu/cpu31/topology/thread_siblings_list 7,31
 /sys/devices/system/cpu/cpu7/topology/thread_siblings_list 7,31
 /sys/devices/system/cpu/cpu32/topology/thread_siblings_list 8,32
 /sys/devices/system/cpu/cpu8/topology/thread_siblings_list 8,32
 /sys/devices/system/cpu/cpu33/topology/thread_siblings_list 9,33
 /sys/devices/system/cpu/cpu9/topology/thread_siblings_list 9,33
 /sys/devices/system/cpu/cpu10/topology/thread_siblings_list 10,34
 /sys/devices/system/cpu/cpu34/topology/thread_siblings_list 10,34
 /sys/devices/system/cpu/cpu11/topology/thread_siblings_list 11,35
 /sys/devices/system/cpu/cpu35/topology/thread_siblings_list 11,35
 /sys/devices/system/cpu/cpu12/topology/thread_siblings_list 12,36
 /sys/devices/system/cpu/cpu36/topology/thread_siblings_list 12,36
 /sys/devices/system/cpu/cpu13/topology/thread_siblings_list 13,37
 /sys/devices/system/cpu/cpu37/topology/thread_siblings_list 13,37
 /sys/devices/system/cpu/cpu14/topology/thread_siblings_list 14,38
 /sys/devices/system/cpu/cpu38/topology/thread_siblings_list 14,38
 /sys/devices/system/cpu/cpu15/topology/thread_siblings_list 15,39
 /sys/devices/system/cpu/cpu39/topology/thread_siblings_list 15,39
 /sys/devices/system/cpu/cpu16/topology/thread_siblings_list 16,40
 /sys/devices/system/cpu/cpu40/topology/thread_siblings_list 16,40
 /sys/devices/system/cpu/cpu17/topology/thread_siblings_list 17,41
 /sys/devices/system/cpu/cpu41/topology/thread_siblings_list 17,41
 /sys/devices/system/cpu/cpu18/topology/thread_siblings_list 18,42
 /sys/devices/system/cpu/cpu42/topology/thread_siblings_list 18,42
 /sys/devices/system/cpu/cpu19/topology/thread_siblings_list 19,43
 /sys/devices/system/cpu/cpu43/topology/thread_siblings_list 19,43
 /sys/devices/system/cpu/cpu20/topology/thread_siblings_list 20,44
 /sys/devices/system/cpu/cpu44/topology/thread_siblings_list 20,44
 /sys/devices/system/cpu/cpu21/topology/thread_siblings_list 21,45
 /sys/devices/system/cpu/cpu45/topology/thread_siblings_list 21,45
 /sys/devices/system/cpu/cpu22/topology/thread_siblings_list 22,46
 /sys/devices/system/cpu/cpu46/topology/thread_siblings_list 22,46
 /sys/devices/system/cpu/cpu23/topology/thread_siblings_list 23,47
 /sys/devices/system/cpu/cpu47/topology/thread_siblings_list 23,47

Nó có nghĩa là cpu0 và cpu24 chia sẻ cùng một "địa chỉ" phần cứng vật lý. Điều tương tự cho cpu1 và cpu25 ...

Vì vậy, về cơ bản, nếu tôi muốn tắt tính năng siêu phân luồng khỏi hệ điều hành linux của mình, tôi nên đặt '0' trong cpu {24..47} / trực tuyến với

for fake_cpu in {24..47}; do echo 0 > /sys/devices/system/cpu/cpu$fake_cpu/online;done

Bạn sẽ nhận thấy hệ thống của tôi thú vị như thế nào khi đánh số lõi.


Vui lòng sử dụng các khối mã thay vì dấu ngoặc kép cho những thứ trên thiết bị đầu cuối; nó là đơn giản hơn nhiều để đọc.
HalosGhost

1

bạn cũng có thể sử dụng lscpu:

# lscpu --all --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3:L4 ONLINE MAXMHZ    MINMHZ
0   0    0      0    0:0:0:0:0        yes    3200.0000 800.0000
1   0    0      1    1:1:1:0:0        yes    3200.0000 800.0000
2   0    0      2    2:2:2:0:0        yes    3200.0000 800.0000
3   0    0      3    3:3:3:0:0        yes    3200.0000 800.0000
4   0    0      0    0:0:0:0:0        yes    3200.0000 800.0000
5   0    0      1    1:1:1:0:0        yes    3200.0000 800.0000
6   0    0      2    2:2:2:0:0        yes    3200.0000 800.0000
7   0    0      3    3:3:3:0:0        yes    3200.0000 800.0000

ở đây lõi logic 0 và 4 đi đến lõi 0

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.