2010-08-23 5 views
10

Programımla biraz uğraştım (çok parçalı bir çok parçaya çalışıyorum) ve "CPU geçmişi" nin ne kadar çok çalıştığını fark ettim. başla. 2-4 işçinin “istikrarlı” bir iş akışı yarattığı görülmektedir, ancak 5-8 işçinin sabitlenmesi düzensiz davranışlar üretmektedir (sıfırdan maksime, resimlere bakınız). Tüm çalışmaların "pürüzsüz" maksimum kapasite ile (örneğin, sadece% 25 ile 2 çekirdek) başlatıldığını ve sadece bir dakika sonra düzensiz bir davranış sergilediğine işaret etmeliyim. Neler oluyor? 4 çekirdekli işlemci var ve sizce bu davranış bu gerçekle ilgili olabilir mi?Farklı sayılarda birden çok çalışan işçiyi kullanırken farklı davranış

Umarım resimleri görebilirsiniz.

2 işçi 2 workers

3 işçi 3 workers

4 işçi 4 workers

5 işçi 5 workers

6 işçi 6 workers

7 işçi 7 workers

8 işçi 8 workers

+2

'Multicore' paketi veya' doSMP' kullanıyor musunuz? Windows 7'de mi? – Shane

+0

İşçilerinizin amacı nedir? birbirinden tamamen bağımsız mıdırlar? Belki de işçilerin açlıktan muzdarip. –

+0

Burada bir soru var mı? Eğer öyleyse, nedir? –

cevap

11

Bu hiper iş parçacığı ile dört çekirdekli klasik bir davranıştır. R, hesaplamalarda genellikle tam çekirdeği kullandığı için hiper-iş parçacığı ile kazanmaz. Böylece, bir fiziksel işlemci 2 mantıksal olanı yaparsa, işlemcinin her iki iplik arasında sürekli olarak geçiş yapması gerekir.

R için bilgisayarımdaki hiper iş parçacığını kaldırdım. Aksine, sadece yardımcı olmuyor. R normalde sadece bir iş parçacığı ile çalışırken, kapasite kaybedersiniz (maks% 25 yerine% 12,5).

+1

Ayrıca, varsayılan olarak, bir işlemin bir çekirdeğe bağlı olmadığını, ancak çekirdekler arasında tüm zaman boyunca atladığını da unutmayın. Bu, neden 4'den fazla çalışanınız olduğu andaki 2 mantıksal çekirdekte belirgin olmak yerine yavaş yavaş arttığınızı gördüğünüz etkinin nedenini açıklıyor. Ayrıca, kaçınılmaz olarak çok çekirdekli bir makinede sahip olduğunuz dikenli grafikleri de açıklıyor. –

+0

Bu açıklamayı almıyorum. İyi yazılmış bir CPU-bağlı program, CPU'ların daha iyi kullanımını sağlayabilir. –

+0

@David: Ne satın almıyorsunuz? Sadece 4 fiziksel çekirdek ve 8 mantıksal çekirdek varsa, işlemci iki iş parçacığı arasında geçiş yapmak zorunda mı? Bir çekirdeğe başka 2 ipi nasıl koyarsınız? Eşzamanlı? Ya da, bir süreci özellikle bir çekirdeğe bağladığınız gerçeği, mümkün olduğu zaman süreçlerin kendisi çekirdekleri değiştirir mi? –