Código paralelo mala escalabilidad

Recientemente he estado analizando cómo mis cálculos paralelos realmente se aceleran en un procesador de 16 núcleos. Y la fórmula general que llegué a la conclusión, cuantos más hilos tengas, menos velocidad por núcleo obtienes, me está avergonzando. Aquí están los diagramas de mi carga de cpu y velocidad de procesamiento:

Entonces, puedes ver que la carga del procesador aumenta, pero la velocidad aumenta mucho más lentamente. Quiero saber por qué se produce este efecto y cómo obtener el motivo de un comportamiento de no escalable. Me he asegurado de usarModo servidor GC. Me he asegurado de que estoy paralelizando el código apropiado tan pronto como el código no hace nada más que

Carga datos desde la RAM (el servidor tiene 96 GB de RAM, el archivo de intercambio no debe ser golpeado)Realiza cálculos no complejos.Almacena datos en RAM

Heperfilado Mi aplicación cuidadosamente y no encontró cuellos de botella: parece que cada operación se vuelve más lenta a medida que aumenta el número de hilos.

Estoy atascado, ¿qué pasa con mi escenario?

Yo uso .Net 4 Task Parallel Library.

Respuestas a la pregunta(5)

Su respuesta a la pregunta