Napisałem bardzo wątkowe zadanie wielowątkowe, które działa zgodnie z oczekiwaniami na moim czterordzeniowym MacBooku Pro 2012. Obracam go luźno za pomocą 20 nici, a temperatury dochodzą do około 100 ° C, mierzone za pomocą gadżetu Intel Power Gadget przy minimalnym dławieniu.
Zabierz ten sam program i pliki do domu na mojego 13-calowego MacBooka Pro 2016 z dwurdzeniową maszyną i uruchom go. Spodziewam się, że będzie on również utrzymywał 3,3-3,4 GHz, dopóki temperatura nie osiągnie poziomu 100 ° C. Górne polecenie pokazuje zadanie na poziomie 350% (2 rdzenie każdy z podwójnym wątkiem), ale częstotliwość procesora zostaje obcięta do 1,6-1-8 GHz przy temperaturze wynoszącej tylko około 60 ° C, a wentylatory są zupełnie ciche. Jeśli zacznę 4 osobne jedno-wątkowe zadania procesora, maszyna zachowuje się zgodnie z oczekiwaniami, utrzymując 3,3-3,4 GHz, aż osiągnie 100 ° C i wentylatory się rozkręcą. Pytanie brzmi: dlaczego mój procesor jest dławiony?
Oba komputery są aktualne i obsługują te same wersje gcc. Jeśli nawet wezmę plik binarny z działającej maszyny i umieści go na komputerze Mac 2016, będzie miał ten sam problem.
Jeśli uruchomię 3 lub 4 pojedyncze wątki procesora, aby maszyna pracowała na pełnych obrotach, to uruchom program wątkowy, a także spowolni częstotliwość.
Oba komputery mają 16 GB pamięci RAM.
Edytować
Po zabawie z kodem podejrzewam, że dławi się, gdy zadanie tworzy zbyt wiele wątków. W tym programie biorę każdy czytany rekord i tworzę dla niego wątek. Zezwalam tylko na opuszczenie około 20 wątków naraz, więc w żadnym momencie nie ma więcej niż 21 wątków, ale istnieje 14 400 000 rekordów do przetworzenia, więc w ciągu około 30 minut każdy z tych rekordów zostanie przetworzony przez osobny wątek.
Stworzyłem trywialny program pthread, który zassał czas procesora i uruchomiłem 10 z nich. Problem z laptopem działał i rozgrzał się do 95 ° C bez problemów.
Myślę, że przepiszę kod, aby ponownie użyć tego samego wątku zamiast go zniszczyć i uruchomić ponownie.
Zaktualizuj 5/13/17
Po kilku godzinach pracy tworzy teraz tylko n wątków i ponownie je wykorzystuje, co nie pomogło. Poza temperaturą procesora, co spowoduje, że urządzenie zacznie dławić się?