Eu escrevi uma tarefa encadeada com muita CPU que funciona como esperado no meu quad core 2012 do MacBook Pro. Solto-o com 20 fios e as temperaturas chegam a cerca de 100 ° C, conforme medido com o Intel Power Gadget com o mínimo de aceleração.
Leve o mesmo programa e arquivos de dados para o meu MacBook Pro de 13 "de 2016 com uma máquina com dois núcleos e inicie-o; eu esperaria que ele também mantivesse os 3,3-3,4 GHz até a temperatura chegar perto da marca de 100 ° C. O comando Top mostra a tarefa em 350% (2 núcleos cada com rosca dupla), mas a frequência da CPU é reduzida para 1,6-1-8 GHz com a temperatura apenas a 60 ° C ou mais com os ventiladores em silêncio. Em tarefas de CPU com thread único, a máquina se comporta conforme o esperado, mantendo os 3,3-3,4 GHz até atingir os 100 ° C e os ventiladores acionam A pergunta é por que minha CPU está sendo acelerada?
Ambas as máquinas estão atualizadas e executando as mesmas versões do gcc. Se eu pegar o binário da máquina em funcionamento e colocá-lo no 2016 Mac, ele tem o mesmo problema.
Se eu executar 3 ou 4 encadeamentos únicos da CPU para que a máquina esteja a toda velocidade, inicie o programa encadeado, também diminuirá a frequência.
Ambas as máquinas possuem 16 GB de RAM.
Editar
Depois de brincar com o código, suspeito que ele esteja sendo acelerado quando uma tarefa cria muitos threads. Neste programa, pego cada registro que leio e crio um thread para ele. Eu deixo apenas 20 ou mais threads irem por vez e, em nenhum momento, existem mais de 21 threads, mas existem 14.400.000 registros a serem processados. Nos 30 minutos ou mais, cada um desses registros será processado por um thread separado.
Criei um programa trivial de pthread que sugou o tempo da CPU e definiu 10 deles em execução. O laptop com problema executou isso e aqueceu a 95C sem problemas.
Acho que vou reescrever meu código para reutilizar o mesmo thread em vez de destruí-los e iniciá-los novamente.
Atualização 13/5/17
Depois de várias horas de trabalho, agora apenas cria n threads e apenas as reutiliza, o que não ajudou. Além da temperatura da CPU, o que fará com que esta máquina acelere?