Çok dişli işlemciye yönelik yoğun işlem, sıcaklık sınırlamalarından önce CPU'yu engelliyor


21

2012 MacBook Pro dört çekirdeğimde beklendiği gibi çalışan çok yoğun bir CPU iş parçacığı görevi yazdım. 20 iplikle serbest bırakıyorum ve Intel Power Gadget ile ölçülen minimum kısma değerine sahip sıcaklıklar 100 ° C'ye kadar çıkıyor.

Aynı programı ve veri dosyalarını evimde çift çekirdekli bir makine ile 2016 13 "MacBook Pro'ma alın ve çalıştırın, sıcaklık 100 ° C'ye yaklaşıncaya kadar 3.3-3.4 GHz’de kalmasını beklerdim. Üstteki komut, görevi% 350 olarak gösterir (her iki çift dişli için 2 çekirdekli), ancak CPU frekansı sadece 60 ° C sıcaklıkta ve fanlar sessizken ölü halde iken 1.6-1-8 GHz'ye kesilir. Tek iş parçacıklı CPU görevleri, makine 100 ° C'ye ulaşana ve fanlar kranklanıncaya kadar 3.3-3.4 GHz’i koruyarak beklendiği gibi davranır.

Her iki makine de güncel ve aynı gcc sürümlerini çalıştırıyor. İkiliyi çalışma makinesinden alıp 2016 Mac'e koysam da aynı sorun var.

Makine tam hızda çalışacak şekilde 3 veya 4 CPU tek iş parçacığı çalıştırırsam, dişli programı başlatırsanız, frekansı da yavaşlatır.

Her iki makinede de 16 GB RAM var.

Düzenle

Kodla oynadıktan sonra, bir görev çok fazla iş parçacığı oluşturduğunda boğulma olduğundan şüpheleniyorum. Bu programda okuduğum her kaydı alıyorum ve bunun için bir iş parçacığı oluşturuyorum. Ben sadece 20 ya da öylesine bir parçanın bir seferde gitmesine izin veriyorum, böylece hiçbir zaman 21 işten fazla konu olmayacak, ancak 30 dakika boyunca işlenecek 14.400.000 kayıt var ya da bu kayıtların her biri ayrı bir iş parçacığı tarafından işlenecek.

CPU zamanını emen ve 10 tanesini çalıştıran önemsiz bir pthread programı hazırladım. Sorun laptop koştu ve sorunları olmadan 95C'ye kadar ısındı.

Sanırım onları yok etmek ve tekrar başlatmak yerine aynı konuyu tekrar kullanmak için kodumu yeniden yazacağım.

Güncelleme 5/13/17

Birkaç saatlik çalışmadan sonra, şimdi sadece n dişi yaratıyor ve onları yeniden kullanıyor, bu işe yaramadı. CPU sıcaklığı dışında, bu makinenin boğulmasına neden olacak ne var?


1
Bu soruyu seviyorum! Farklı bir çok iş parçacıklı iş yürütmeye ne dersiniz? Kullanılabilir tüm CPU kaynaklarını kullandığından emin olmak için ffmpeg görevi (1080p veya 4K videoda) gibi bir şey çalıştırmanızı ve kısmalarını kontrol etmenizi öneririm. Bu problemi ya da daraltabilir: bu makinedeki programınız ya da bu makinedeki tüm okuyuculu programlar
NoahL

1
Cinebench R15 kriterini kullanırsam, dişli görevleri kullanır ve beklendiği gibi çalışır, sıcaklık 100 ° C'ye kadar yükselir ve fanlar yükselir. Intel Power Gadget, CPU frekansının hala 3.3GHz'e yakın olduğunu gösteriyor. Yani bir donanım sorunu gibi görünmüyor. Tüm kod sadece p_threads ve minimal Mutex kilitlerini kullanmaktan hoşlanan hiçbir şeye sahip olmayan C kodudur. Program çoğunlukla, 16 gig veri gibi bir şeyi çeken ve çok sayıda kırma işlemi için n bireysel ipliklere geçiren bir iplikle DNA sekansı işlemesidir.
markatlnk

1
Görünüşe göre diğer programlar hedeflediğiniz tavanı vurabilir mi? Sorun yalnızca özel kodunuzdan kaynaklanıyorsa, bu kod hakkında daha fazla bilgiye ihtiyacımız olabilir. Yine de, verileriniz nerede işlenecek? Dış? Kernel_task ne kadar iş bildirdi? Diğer sıcaklık sensörleri?
L'AngLаngС

1
CPU'nuz 4 değil, 8 mantıksal çekirdeğe sahiptir, yani 4 iş parçacığı% 50 toplam CPU kullanımı olarak gösterilir. Bunun sisteminizin yük tahminini etkileyip etkilemediğini merak ediyorum.
sudo

Beladan geçmek isteyip istemediğinizi bilmiyorum, ancak bunun yerine hata ayıklama çekirdeği ile çekirdek düzeyinde hata ayıklamayı deneyebilirsiniz. Apple dev sitesindeki indirmelerden daha fazla tıklarsanız alabilirsiniz.
user3052786, 15:18

Yanıtlar:


1

Bu uzun bir görüntü olabilir, ancak belki de 2012 ve 2016 işlemci paketleri arasındaki tek çekirdekli performans ve / veya önbellek performansındaki fark, çekirdeklerin yeniden çalışmaya başlayabilene kadar veriye aç ve düşüren yeterince büyük?

Bu tahminde bulunuyorum, çünkü yeterli sayıda tek iş parçacığı işleminin tüm çekirdeklerde tam hızda çalışabileceğini ve basit bir çok iş parçacıklı programın tüm çekirdeklerde tam hızda çalışabileceğini belirtirsiniz.

Bu, gerçek iş yükünüzün program tasarımında, CPU'ların her zaman çalışmasına izin vermeyen test çok iş parçacıklı iş yükünün bir şey olduğunu düşündürüyor.


0

/System/Library/Extensions/AppleACPIPlatform.kext çekirdek uzantısı çok fazla sıcaklık ve CPU korumasını kontrol ediyor. Açıkçası, sisteminizde zaten derlendi, ancak https://opensource.apple.com adresinde bulunabilir (bulamıyorum, ancak yalnızca hızlıca bir görünüm verdim). Apple'ın işlemci kapasitesi konusunda çok tutucu ayarları olsa beni şaşırtmazdı.


3
AFAIK Apple kexts açık kaynak değildir. (Garip bir şekilde?) Bu konuda bilgi için en iyi kaynak, sürücüleri enjekte etme ihtiyacı nedeniyle Hackintoshing topluluğudur.
JMY1000

Hiç garip değil! Tamirciler en iyi tavsiyeyi verirler çünkü ilk elden çok daha fazla şey biliyorlar. Muhafazakar CPU ayarlarına gelince, MBP'nin patlama performansı için harika bir soğutucuya sahip olduğunu ancak sürekli çevrimler için çok iyi olmadığını unutmayın. Bu problemin, Apple'ın bacaklarınızı pişmeden önleyici olarak korumak için istekli olması muhtemeldir. Bunun üzerine 2012MBP ile ilgili birkaç dava duydum.
user1901982

0

Os, dişleri tahmin edilemez ve kontrol dışı olarak algıladığında, donanım ve sistem dengesini korumak için kısma yapacaktır, 2012 modeli farklı davranır ve en kötü durumda kilitlenebilir. Kötü uygulanan iplik kontrolü ile başıma geldi benim hatam. Sadece bir çift çekirdekli pek çok iş parçacığı çalıştırmayın.


-2

Kötü uygulanan iplik kontrolü ile başıma geldi benim hatam. Sadece çift çekirdekli bir işlemcide çok fazla iş parçacığı çalıştırmayın.

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.