Ejecuto masivamente trabajos paralelos de informática científica en una computadora Linux compartida con 24 núcleos. La mayoría de las veces, mis trabajos son capaces de escalar a 24 núcleos cuando no se está ejecutando nada más en esta computadora. Sin embargo, parece que cuando se está ejecutando incluso un trabajo de subproceso único que no es el mío, mis trabajos de 24 hilos (que configuré para valores muy buenos) solo logran obtener ~ 1800% de CPU (usando notación de Linux). Mientras tanto, aproximadamente el 500% de los ciclos de la CPU (una vez más, utilizando la notación de Linux) están inactivos. ¿Alguien puede explicar este comportamiento y qué puedo hacer al respecto para obtener los 23 núcleos que no están siendo utilizados por otra persona?Linux 2.6.31 Programador y trabajos multiproceso
Notas:
En caso de que sea relevante, he observado esto en versiones ligeramente diferentes del núcleo, aunque no puedo recordar lo que la parte superior de mi cabeza.
La arquitectura de la CPU es x64. ¿Es posible que el hecho de que mis trabajos de 24 núcleos sean de 32 bits y los otros trabajos en los que estoy compitiendo con 64 bits es relevante?
Editar: Una cosa que acabo de notar es que subir hasta 30 hilos parece aliviar el problema hasta cierto punto. Me da hasta ~ 2100% de CPU.
Reevaluando solo los procesos de efectos que usted conoce, si solo ejecuta un único proceso que genere n subprocesos ... bueno ... compite solo con un solo proceso. ¿Está disponible root/sudo en esta máquina? –
¿Qué sucede si se reduce a 23 hilos, dejando un núcleo disponible para el otro trabajo? – caf