Tengo una gran aplicación C# multiproceso que se ejecuta en un servidor de 4 vías multinúcleo. Actualmente estamos utilizando la recolección de basura "en modo servidor". Sin embargo, las pruebas han demostrado que el modo de estación de trabajo GC es más rápido.¿Deberíamos utilizar la recolección de basura "estación de trabajo" o la recolección de basura "servidor"?
aplicaciones de código administrado que utilizan la API de servidor reciben importantes beneficios de usar el colector optimizado servidor de basura (GC) en lugar del GC estación de trabajo predeterminado.
La estación de trabajo es el modo predeterminado de GC y el único disponible en las computadoras de un solo procesador. Workstation GC está alojado en la consola y en las aplicaciones de Windows Forms. Realiza colecciones completas (generación 2) al mismo tiempo que el programa en ejecución, lo que minimiza la latencia. Este modo es útil para aplicaciones de clientes, donde el rendimiento percibido suele ser más importante que el rendimiento sin procesar.
El servidor GC está disponible solo en computadoras multiprocesador. Crea un montón e hilo administrado por separado para cada procesador y realiza colecciones en paralelo. Durante la recopilación, todos los subprocesos administrados se ponen en pausa (los subprocesos que ejecutan código nativo se pausan solo cuando regresa la llamada nativa). De esta forma, el modo GC del servidor maximiza el rendimiento (el número de solicitudes por segundo) y mejora el rendimiento a medida que aumenta el número de procesadores. El rendimiento especialmente brilla en computadoras con cuatro o más procesadores.
Pero no estamos viendo el brillo de rendimiento !!!! ¿Alguien tiene algún consejo?
DanC. Esta es la primera vez que escucho acerca de los modos de GC. ¿Puedes publicar enlaces a las páginas relevantes de MSDN? – spender
¿Qué tipo de rendimiento esperas anticipar? ¿Su programa basado en Windows GUI o algún tipo de servicio web? –
Gracias Johannes. – spender