Inti, utas, dan multi-pemrosesan

0

Saya tahu semua terminologi ini adalah atm lapangan yang membingungkan, tetapi saya mencoba menginterpretasikan bagaimana mereka digunakan di: http://www.cpu-world.com/CPUs/Xeon/Intel-Xeon%20E7-8870.html

Konteks yang saya dapatkan adalah bahwa saya punya program lama yang ditulis dalam VB6 yang saya dapat jalankan banyak contoh. Dan saya bertanya-tanya berapa banyak contoh yang dapat saya nyalakan sebelum pemrosesan secara signifikan melambat? Misalnya. untuk Xeon E7-8870 apakah itu 10 core, 20 thread atau 8 multi-prosesor yang mencekik saya?

(Saya tahu program ini perlu ditulis ulang dalam C #, prioritas lain terlebih dahulu ...)

Sangat dihargai

Rodney
sumber

Jawaban:

1

Setelah Anda menjenuhkan inti fisik, setiap contoh akan melambat secara signifikan. Ini terutama benar jika semua utas berjalan secara substansial campuran instruksi yang sama. Jika Anda memiliki 10 core fisik, Anda mungkin akan mulai melihat penurunan kinerja total jika Anda meluncurkan lebih banyak instance.

Anda benar-benar tidak akan tahu sampai Anda mencobanya. Jika tugas melakukan banyak I / O, Anda mungkin menemukan bahwa lebih banyak contoh membuat CPU tetap sibuk bahkan selama I / O. Namun, jika tugas menggunakan banyak memori, Anda mungkin menemukan bahwa tekanan yang lebih besar pada cache dan pengontrol memori menyebabkan total throughput benar-benar turun, mungkin secara drastis.

Bahkan dalam kondisi terbaik, hyper-threading hanya menambah sekitar 15% peningkatan throughput. Itu berarti dua utas masing-masing berjalan sekitar 57% secepat satu utas.

David Schwartz
sumber
2

Tidak ada kebingungan sebenarnya.

Inti adalah prosesor, mati. Anda dapat memiliki prosesor, yang merupakan inti tunggal pada satu paket. Anda juga dapat memiliki prosesor dual-core yang merupakan 1 paket dengan banyak CPU. Hal yang sama berlaku untuk multicore apa pun. Anda dapat memiliki prosesor 1000 inti, masih satu paket dengan 1000 prosesor.

Multiprocessor adalah beberapa soket, dan paket CPU fisik. Anda dapat memiliki 2 prosesor inti tunggal, atau lebih. Anda juga dapat memiliki beberapa prosesor multi-inti dengan asumsi CPU mendukungnya. Prosesor 4 quad core pada dasarnya sama dengan memiliki 16 prosesor pada paket terpisah atau 1 16 paket inti sejauh daya dan kinerja berjalan. Hanya 4 paket dan 4 core untuk setiap paket.

Utas adalah berapa banyak proses terpisah yang dapat berjalan sekaligus. Sederhananya, sebagian besar prosesor dapat menangani 1 utas sekaligus, Hyperthreading dapat mengerjakan 2 utas sekaligus. HTT (Hyperthreading) berarti setiap inti (Tidak masalah jika 2 pada 1, atau 1 oleh 2) dapat melakukan 2 utas. Jadi prosesor HTT quad core secara teori dapat melakukan 8 thread. Ini tidak selalu benar, dan beberapa perangkat lunak menangani HTT sangat buruk.

Adapun proses Anda, sulit untuk dikatakan. Jika Anda memiliki 10 core dengan Hyper threading, dan aplikasi hanya dapat berjalan pada satu utas, maka Anda mungkin dapat memiliki 20 instance terpisah dengan asumsi: Anda memiliki cukup RAM. Disk drive Anda dapat bersaing dengan IOs. Tidak ada lagi yang mengganggu atau mengambil alih.

Jika proses tidak dapat mengisi seluruh CPU sendiri (Katakan saja dengan penggunaan 50%), Anda mungkin dapat menambahkan beberapa utas / pekerjaan tambahan ke kumpulan juga.

Austin T French
sumber
Dan jika suatu proses menggunakan (hampir) semua 1 core atau 25% total penggunaan yang ditampilkan pada quad, dan hyperthreading memiliki nilai yang kecil (biasanya), Anda dapat menjalankan 4 dengan quad secara efektif, sebelum mereka berjuang untuk cpu. Jika entah bagaimana multithreaded, dan mampu menggunakan semua core Anda mungkin mendapatkan 1-2 sebelum mereka memaksimalkan core.
Psycogeek