Lõi vs Chủ đề: Tôi nên chạy bao nhiêu luồng trên máy này?


41

Tôi nên chạy bao nhiêu chủ đề trên máy này?

My lscpunói có 96 lõi. Là những lõi vật lý? Chủ đề tối đa và tối ưu mà tôi có thể chạy trên máy này là gì?

https://stackoverflow.com/a/10670440/610569 cho thấy tôi có thể chạy hơn 20 luồng trên mỗi lõi. Được không Điều đó có tối ưu không?

alvas@server:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                96
On-line CPU(s) list:   0-95
Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4
NUMA node(s):          4
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Model name:            Intel(R) Xeon(R) CPU E5-4657L v2 @ 2.40GHz
Stepping:              4
CPU MHz:               2700.000
CPU max MHz:           2900.0000
CPU min MHz:           1200.0000
BogoMIPS:              4801.91
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92
NUMA node1 CPU(s):     1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93
NUMA node2 CPU(s):     2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94
NUMA node3 CPU(s):     3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95

Xin tha thứ cho sự buồn nôn của tôi trong lõi / chủ đề.

Câu trả lời:


52

Đây là những gì bạn muốn biết

Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4

Bạn có 4 ổ cắm CPU, mỗi CPU có thể có tối đa 12 lõi và mỗi lõi có thể có hai luồng.

Số luồng tối đa của bạn là, 4 CPU x 12 lõi x 2 luồng trên mỗi lõi, do đó 12 x 4 x 2 là 96. Do đó, số luồng tối đa là 96 và số lõi tối đa là 48.

Cái gì tốt hơn

Điều đó phụ thuộc vào những gì bạn muốn làm, nhiều luồng hơn có nghĩa là tần số ít hơn (nghĩa là 3ghz bị chia làm hai) nhưng đa tác vụ tốt hơn (nhiều luồng hơn) và sử dụng lõi đầy đủ (không siêu phân luồng) sẽ tốt hơn cho các tác vụ sử dụng CPU cao ( tức là trò chơi).

Hy vọng điều này sẽ giúp bạn.


3
"Nhiều chủ đề hơn có nghĩa là tần số ít hơn", tuyên bố này là rất sai. Ngay cả với siêu phân luồng, một quá trình đơn lẻ có thể sử dụng hoàn toàn bộ xử lý. Siêu phân luồng có thể sử dụng các đường ống dẫn và các thanh ghi mà không sử dụng để thực hiện một số thực thi từ các tiến trình / luồng khác nhau song song, tăng thông lượng tối đa của bộ xử lý trong một số trường hợp nhất định. Hiệu suất đạt được là rất ứng dụng / cấu hình. Sau P4, không có hình phạt hiệu suất nào được ghi nhận khi bật HT (lõi gen P4 có một số vấn đề trong một số trường hợp nhất định)
NGRhodes

2
Tôi không thấy tuyên bố này là rất sai. Nếu bạn chạy hai quy trình trên một lõi, tần số có sẵn ít hơn cho mỗi quy trình, khi so sánh với việc chạy từng quy trình trên lõi của chính nó. Đó là một tuyên bố rất cơ bản và đơn giản, nhưng OP không bao giờ yêu cầu bất kỳ chi tiết nào về siêu phân luồng hoặc cách thức hoạt động của nó. Mặc dù bạn đã đúng, siêu phân luồng đã đi một chặng đường dài và với 48 lõi tôi chắc chắn họ sẽ không muốn tắt nó.
Đánh dấu Kirby

2
@NGRhodes: Intel HT đủ chi tiết để chồng chéo việc thực hiện không theo thứ tự giữa hai luồng. Về cơ bản, đây là toàn bộ quan điểm của HT, để phơi bày sự song song ở cấp độ chỉ dẫn hơn đối với lõi không theo thứ tự. . tắc nghẽn mã của bạn chạy vào, HT có thể cung cấp cho bạn thông lượng gần gấp đôi hoặc gần như không có thông lượng bổ sung. (Giống như 15% cho mã hóa video x264.)
Peter Cordes

1
Xem agner.org/optizes để biết chi tiết vi kiến ​​trúc.
Peter Cordes

1

Mỗi luồng lõi cpu (luồng dựa trên phần cứng) - một trong 96 lõi của bạn có hiệu quả có thể xử lý 16 luồng (luồng dựa trên phần mềm theo chủ đề C ++ thread.h) trong hầu hết các trường hợp theo quan điểm lý thuyết của tôi.


1
bạn đã nhận được "hiệu quả có thể xử lý 16 chủ đề" ở đâu? Đầu ra cho biết "Chủ đề cho mỗi lõi: 2"
commitandroider

0

Bạn sẽ tìm thấy có bao nhiêu luồng bạn có thể chạy trên máy của mình bằng cách chạy lệnh htop hoặc ps trả về số lượng quá trình trên máy của bạn.

Bạn có thể sử dụng trang man về lệnh 'ps'.

man ps

Nếu bạn muốn tính toán số lượng tất cả người dùng xử lý, bạn có thể sử dụng một trong các lệnh sau:

  1. ps -aux| wc -l
  2. ps -eLf | wc -l

Tính số lượng của một quá trình người dùng:

  1. ps --User root | wc -l

Ngoài ra, bạn có thể sử dụng "htop" [Tham khảo] :

Cài đặt trên Ubuntu hoặc Debian:

sudo apt-get install htop

Cài đặt trên Redhat hoặc CentOS:

yum install htop
dnf install htop      [On Fedora 22+ releases]

Nếu bạn muốn biên dịch htop từ mã nguồn, bạn sẽ tìm thấy nó ở đây .

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.