Pregunta de seguimiento desde Multi-core usage, threads, thread-pools..NET movimiento de hilos entre los núcleos
¿Los hilos se mueven de un núcleo a otro durante su vida útil?
Por supuesto. Imagine que tiene tres hilos ejecutándose en un sistema dualcore. Muéstreme un calendario justo que no involucre el movimiento regular de los hilos entre los núcleos.
Esta es mi primera vez en este sitio, por lo que no tuve suficiente reputación para hacer un comentario, supongo. Decidí hacer una nueva pregunta sobre la que quería comentar.
¿Cuál es el proceso de selección de un núcleo para mover un hilo? ¿Es que el planificador tiene una lista de hilos que necesitan tiempo de procesamiento y cuando uno termina, coloca otro?
También me preguntaba si hay una referencia para la afirmación de que los hilos se mueven entre los núcleos en absoluto. ¿O solo se considera "conocimiento común"?
Gracias!
¿Es simplemente una cuestión de "la memoria caché ya estaba en este núcleo, por lo que esta tiene una mayor probabilidad de recuperar el hilo"? Parecía ser más complicado que eso después de leer "Cambio rápido de hilos entre los núcleos" por Strong y Tullsen et al. y "Implicaciones de rendimiento de la migración de subproceso único en un chip de múltiples núcleos" por Constantinou, Sazeides et al. Si solo se trata de un historial de caché, ¿el programador de Windows está bajo el grupo de "cualquier programador inteligente" o se debe tener cuidado para garantizar que la programación sea "inteligente"? – mphair
Es más como "este hilo se ha ejecutado en este núcleo, y probablemente (debido a cosas como el caché de la CPU) se ejecute más rápido si lo vuelvo a programar en este núcleo". No he leído los documentos que citas, así que no puedo comentar sobre ellos. Los algoritmos de programación en Windows y otros sistemas son más avanzados de lo que los generalizo, pero la idea es la misma. Es más rápido ejecutar un hilo en el mismo núcleo, por lo que es más probable que el programador lo vuelva a colocar allí. Pero no hay garantías a menos que configure manualmente afinidad de subprocesos. –