He escrito una tarea con subprocesos muy intensiva de CPU que funciona como se esperaba en mi MacBook Pro quad core 2012. Lo desabrocho con 20 hilos y las temperaturas alcanzan aproximadamente los 100 ° C, medido con Intel Power Gadget con un mínimo estrangulamiento.
Lleve el mismo programa y archivos de datos a mi MacBook Pro de 13 "2016 con una máquina de doble núcleo e inícielo, esperaría que también mantuviera los 3.3-3.4 GHz hasta que la temperatura se acerque a la marca de 100 ° C. El comando superior muestra la tarea al 350% (2 núcleos cada uno con doble rosca), pero la frecuencia de la CPU se reduce a 1.6-1-8 GHz con la temperatura solo a 60 ° C más o menos con los ventiladores en silencio. Si comienzo 4 por separado tareas de CPU de un solo subproceso, la máquina se comporta como se espera, manteniendo los 3.3-3.4 GHz hasta que alcanza los 100 ° C y los ventiladores se ponen en marcha. La pregunta es ¿por qué mi CPU está siendo acelerada?
Ambas máquinas están actualizadas y ejecutan las mismas versiones de gcc. Si incluso tomo el binario de la máquina en funcionamiento y lo pongo en la Mac 2016, tiene el mismo problema.
Si ejecuto 3 o 4 subprocesos simples de la CPU para que la máquina funcione a toda velocidad, luego inicio el programa de subprocesos, también disminuye la frecuencia.
Ambas máquinas tienen 16 GB de RAM.
Editar
Después de jugar con el código, sospecho que se está estrangulando cuando una tarea crea demasiados hilos. En este programa, tomo cada registro que leo y creo un hilo para él. Solo dejo que pasen alrededor de 20 hilos a la vez, por lo que en ningún momento hay más de 21 hilos, pero hay 14,400,000 registros que se procesarán durante los 30 minutos más o menos, cada uno de esos registros será procesado por un hilo separado.
Creé un programa trivial pthread que absorbió el tiempo de CPU y configuró 10 de ellos en ejecución. El problema de la computadora portátil funcionó y se calentó a 95 ° C sin problemas.
Supongo que volveré a escribir mi código para reutilizar el mismo hilo en lugar de destruirlos e iniciarlos nuevamente.
Actualización 13/05/17
Después de varias horas de trabajo, ahora solo crea n hilos y simplemente los reutiliza, eso no ayudó. Aparte de la temperatura de la CPU, ¿qué hará que esta máquina se acelere?