Çekirdek vs İplikler: Bu makinede kaç tane iplik kullanmalıyım?


41

Bu makinede kaç tane iplik kullanmalıyım?

Diyorum lscpuki 96 tane çekirdek var. Bunlar fiziksel çekirdekler mi? Bu makinede çalıştırabileceğim maksimum ve en uygun iplik nedir?

https://stackoverflow.com/a/10670440/610569 , çekirdek başına 20'den fazla iş parçacığı çalıştırabileceğimi gösteriyor. Uygun mu? Bu optimal mi?

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

Özürlülüğümü çekirdekler / başlıklar halinde affet.

Yanıtlar:


52

Bilmek istediğin bu

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

4 adet CPU soketiniz vardır, her bir CPU, en fazla 12 çekirdeğe sahip olabilir ve her bir çekirdeğin iki dişi olabilir.

Maksimum diş sayınız, çekirdek başına 4 CPU x 12 çekirdek x 2 iş parçacığıdır, bu nedenle 12 x 4 x 2 96'dur. Bu nedenle, maksimum diş sayısı 96 ve maksimum çekirdek sayısı 48'dir.

Ne daha iyi ?

Bu, ne yapmak istediğinize bağlı olarak, daha fazla iş parçacığı daha az sıklık anlamına gelir (yani, 3 ghz ikiye bölünür), ancak daha iyi çoklu görev (daha fazla iş parçacığı) ve tam çekirdek kullanımı (hiper iş parçacığı yok) yüksek CPU kullanım görevleri için daha iyidir ( yani oyunlar).

Umarım bu size yardımcı olur.


3
"daha fazla iş parçacığı daha az sıklık anlamına gelir", bu ifade çok yanlıştır. Hiper-dişlemede bile, tek bir yalnız işlemciden tam olarak faydalanabilir. Hyperthreading, belirli durumlarda bir işlemcinin maksimum verimini artırarak, farklı işlemlerden / iş parçacıklarından paralel olarak bazı işlemleri yapmak için boşta olacak olan talimat boru hatlarından ve kayıtlarından faydalanabilir. Performans kazancı çok uygulama / konfigürasyondur.
P4'ten

2
Bu ifadeyi çok yanlış görmüyorum. Tek bir çekirdekte iki işlem yürütüyorsanız, her işlem için kendi çekirdeğinde işlemeye göre daha az sıklık vardır. Bu çok basit ve basit bir ifadedir, ancak OP hiçbir zaman aşırı iş parçacığı ya da nasıl çalıştığı hakkında herhangi bir ayrıntı talep etmedi. Haklı olsanız da, hiper iş parçacığı uzun bir yol kat etti ve 48 çekirdekli ile kapatmak istemediklerinden eminim.
Mark Kirby

2
@NGRhodes: Intel HT, iki iş parçacığı arasında sıra dışı yürütmeyi üst üste bindirecek kadar iyi ayarlanmış. Bu, temel olarak HT'nin bütün noktasıdır, sıra dışı çekirdeğe daha fazla öğretim düzeyinde paralellik ortaya koymaktır. (yani bu yürütme birimlerinin bir dalın yanlış algılanmasından kurtarılması veya bir önbellek beklemesi sırasında bile beslenmesini sağlamak) Kodunuzun girdiği darboğaz, HT size neredeyse çift verim verebilir veya neredeyse hiç verim vermeyebilir. (X264 video kodlama için% 15 gibi.)
Peter Cordes

1
Bkz agner.org/optimize mikromimarisinde detaylar için.
Peter Cordes

1

Her cpu çekirdeği iş parçacığı (donanım tabanlı iş parçacığı) - 96 çekirdeğinizden biri verimli bir şekilde 16 iş parçacığını (yazılım tabanlı iş parçacığı fe C ++ iş parçacığı.h) teorik olarak düşünüyorum.


1
Nerede "verimli bir şekilde 16 iş parçacığı işleyebilir" aldın? : Çıktı "2 Konu çekirdek başına (ler)" diyor
committedandroider

0

Makinenizde işlem sayısını döndüren htop veya ps komutunu çalıştırarak makinenizde kaç tane iplik çalıştırabileceğini bulacaksınız.

'Ps' komutu ile ilgili man sayfasını kullanabilirsiniz.

man ps

Tüm kullanıcıların işlem sayısını hesaplamak istiyorsanız, aşağıdaki komutlardan birini kullanabilirsiniz:

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

Bir kullanıcı işlem sayısının hesaplanması:

  1. ps --User root | wc -l

Ayrıca, "htop" [Başvuru] kullanabilirsiniz :

Ubuntu veya Debian’a yükleme:

sudo apt-get install htop

Redhat veya CentOS’a Kurulum:

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

Htop'u kaynak kodundan derlemek istiyorsanız, burada bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.