Neden 16 iş parçacığı hiper iş parçacıklı 4 çekirdekli bir i7'de 8'den daha verimli? (Robocopy)


3

Windows 8.1'de 2 sunucunun verilerini özel bir bilgisayarın depolama alanına kaydetmek için Robocopy kullanıyorum. Veri hacmi 4.110 dosyadaki 147.314 dosyadır (66,841,845,760 bayt).

Dahil olan her 3 bilgisayarda da 4 çekirdekli bir i7 işlemci var ve 1 Gb ağdalar. Hedefin Depolama Alanı (D :) 'e yansıtılmış ve şeritli bir 4 x 4 TB JBOD kılıfı kullanılarak gerçekleştirilmiştir.

CPU'ların 4 çekirdeği ve hiper iş parçacığı nedeniyle, Robocopy anahtarının / MT: 8'in en iyi şekilde çalışacağını ve faydalanıcı iplik yönetimi nedeniyle 8'den fazla ipliğin fazla kullanılmayacağını umuyordum.

Bunu test ettim. Dördüncü test serisinin verilerini burada listeleyeceğim (mm: sn cinsinden süre):

 1 thread:  59:19
 2 threads: 39:12
 4 threads: 29:13
 8 threads: 24:36
16 threads: 24:19
32 threads: 24:27

Verildiği gibi, 16 iş parçacığı kullanan birkaç saniye önemsizdir, ancak tüm test serilerinde tutarlıdır , yani 16 iş parçacığı testinden daha fazla yüklenme nedeniyle değil (4 test serisinde bu olmadığı sürece). Ayrıca, 32 iş parçacığının neredeyse her zaman 8 iş parçacığından biraz daha hızlı olduğunu unutmayın.

Soru: 4 hiper iş parçacığı çekirdekli bir i7'de 16 iş parçacığının 8 iş parçacığından daha verimli olmasının kullanılmasının teknik nedeni nedir?

Yanıtlar:


3

TL; dr sürümü: El Freni kullanarak video kodlama gibi yüksek CPU yoğunluğu olan bir şey yapıyor olsaydınız, yapılacak iş için hiçbir yerde olmadığı gibi CPU'lardan daha fazla çekirdek kullanmak istemezdiniz. Bu durumda çoğu iş parçacığı zamanlarının% 90'ını uyuyarak geçirir, okumaya devam eder veya daha fazla iş parçacığı olmaktan ziyade sizin için çalışır .


Dosyaları kopyalamak özellikle CPU'ya bağlı bir iş değildir. Daha fazla çekirdeğe sahip olmak, diğer görevlerin kopyalama aracınızı engellemesini önlemeye yardımcı olsa da, her bir iş parçacığının her bir çekirdeğin% 100'üne yakın bir yerde çalışması pek olası değildir.

Her bir kopyalama iş parçacığı, sabit diske bir okuma isteği gönderir ve ardından okuma isteğinin yerine getirilmesini beklerken uykuya girer. Dönen pas diskiniz genel olarak 9 milisaniyelik bir arama süresine, pratik olarak CPU terimlerinde sonsuzluğa sahiptir ve kopyalama işi basitçe "henüz hazır mı?" ve CPU çevrimlerini boşa harcar. Bunu yapmak, bu ipliği% 100 CPU'ya ve atık kaynaklara kilitler. Hayır, olan şey, iş parçacığının bir okuma vermesi ve iş parçacığının okuma tamamlanıncaya ve verinin bir sonraki adıma hazır olana kadar uyku moduna geçirilmesidir.

Bu arada başka bir iplik de aynı şeyi yapar, bir okumaya engel olur ve uykuya verilir. Bu, konuların 16 tanesinde olur. (Gerçekte, okuma ve yazma işleminiz senkronizasyondan çıktıkça rastgele zamanlarda gerçekleşecek, ancak siz fikriniz olacak)

Bir iş parçacığı veri için hazır olduktan sonra Windows yeniden zamanlar ve yazılı için işlemeye başlar. İplik söz konusu olduğunda, süreç aynıdır. "Bu veriyi x dosyasına y konumuna yaz" yazıyor ve Windows verileri alıyor ve dizgiyi açıyor. Windows, dosyanın nerede olduğunu bulmak için arka plan üzerinde çalışır, verileri taşır (potansiyel olarak gecikmeye daha fazla milisaniye ekleyerek) ve ardından yazmayı başardıktan sonra iş parçacığına denetimi döndürür.

Hiç bir iş parçacığı bir CPU çekirdeğinde sürekli yanmayacak ve bu yüzden işlemcilere sahip olduğunuzdan daha fazla iş parçacığı sorun değil. Hiçbir iplik bir problem olması için yeterince uyanık kalmayacaktır.

Sadece çok sayıda çalışan iş parçacığı olan tek bir CPU'nuz varsa, işlemci üzerinde tıkanıklık çekiyor olabilirsiniz, ancak bu tür bir iş yüküne sahip çok çekirdekli bir sistemde, eğer CPU sorunsa, şaşırırdım.

Sabit sürücü performansında tıkanma olasılığınız daha yüksek ve sürücülerdeki okuma ya da yazma arabellekleri için kuyruk derinliğine çarpıyorsunuz. Eğer bastırıyorlar fazla konuları kullanarak bir şeyler onun sınırlarına, iplik En iyi numara bitirdiniz ve onunla deney ne yapmaktır ne olduğunu öğrenmek için o diski veya ağ ve tek yol olacak.

SSD'den SSD'ye kopyalamaya sahip bir sistemde, daha az sayıda iş parçacığının daha iyi bir iş parçacığının daha iyi olabileceğinden şüpheleniyorum çünkü eğirme pas HDD'lerinden dosyaları kopyalamaktan, ağ üzerinden iterek ve eğirme pasından yazmaktan daha az gecikme olacağından şüpheliyim; Bu varsayımı destekleyin.


Cevabınız, aynı zamanda SSD'ler hakkındaki notunuz için çok takdir edilmektedir. Bu SSD açıklamaları aynı zamanda HDD’den SSD’ye veya SSD’den HDD’ye de geçerli midir? (Soru için geçerli değildir, sadece
Herb

1
Bilmenin tek yolu denemek. Ancak yolda bir sabit disk varsa, gecikmeleri toplam transfer süresini kesinlikle artıracak. SSD'den SSD'ye… tipik bir SSD okuma veya yazma, bir milisaniyelik düzendedir, ancak bu, bir sonraki okuma veya yazma talebinde bulunmak için gereken CPU zamanının küçük bir bölümüdür. yani, SSD'leri olabildiğince meşgul tutmadığınız bir durumda olabilirsiniz.
Jamie Hanrahan
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.