Adaptación dinámica a tamaños de aplicación (DATAS)
La adaptación dinámica a la recolección de elementos no utilizados de tamaños de aplicación (DATAS) tiene como objetivo adaptarse a los requisitos de memoria de la aplicación. Esto significa que el tamaño del montón de la aplicación debe ser aproximadamente proporcional al tamaño de datos de larga duración. Si la aplicación realiza el mismo trabajo cuando se ejecuta en máquinas con diferentes especificaciones, el tamaño del montón es el mismo o similar. Y si la carga de trabajo se vuelve más ligera o más pesada, el tamaño del montón se ajusta en consecuencia.
En cambio, el modo Recolección de elementos no utilizados de servidor tiene como objetivo mejorar el rendimiento y tratar el proceso como el dominante en la máquina. La cantidad de asignaciones que permite antes de desencadenar la siguiente recolección de elementos no utilizados se basa en el rendimiento, no en el tamaño de la aplicación. Puede aumentar el montón de forma agresiva si necesita y hay memoria disponible. Este crecimiento puede dar lugar a tamaños de montón muy diferentes al ejecutar el proceso en máquinas con diferentes especificaciones de hardware. El montón puede crecer mucho más al mover el proceso a una máquina con muchos más núcleos y más memoria. La recolección de elementos no utilizados del servidor tampoco ajusta necesariamente el montón de forma agresiva si la carga de trabajo se vuelve mucho más ligera.
DATAS ayuda con la mayoría con cargas de trabajo "ampliables" en las que se debe ajustar el tamaño del montón según la exigencia de la carga de trabajo, especialmente a medida que disminuye la demanda. EEsto es especialmente importante en entornos con restricciones de memoria, en los que es importante encajar más procesos cuando la carga de trabajo de algunos de ellos se aligera. También ayuda a planificar la capacidad. DATAS se introdujo como una característica de participación en .NET 8 y está habilitada de forma predeterminada en .NET 9.
Descripción de la característica
Para lograr la adaptación del tamaño de la aplicación y mantener un rendimiento razonable, DATAS hace lo siguiente:
- Establece la cantidad máxima de asignaciones permitidas antes de que se desencadene la siguiente recolección de elementos no utilizados en función del tamaño de datos de larga duración. Esto ayuda a restringir el tamaño del montón.
- Establece la cantidad real de asignaciones permitidas en función del rendimiento.
- Ajusta el número de montones cuando es necesario. Comienza con un montón, lo que significa que si hay muchos subprocesos que asignan, algunos tendrán que esperar. Esto afecta negativamente al rendimiento. DATAS crece y reduce el número de montones según sea necesario. De este modo, es un híbrido entre los modos de recolección de elementos no utilizados existentes, capaz de usar tan solo un montón (como recolección de elementos no utilizados de estación de trabajo) y tantas como coincidan con el recuento de núcleos de la máquina (como recolección de elementos no utilizados del servidor).
- Cuando sea necesario, se realiza una recolección de elementos no utilizados de compactación completa para evitar que la fragmentación sea demasiado alta, lo que también ayuda a restringir el tamaño del montón.
Resultados de punto de referencia
Las imágenes siguientes muestran algunos resultados de pruebas comparativas para TechEmpower JSON y Fortunes Benchmarks. Observe la reducción significativa del conjunto de trabajo al ejecutar las pruebas comparativas en una máquina de 48 núcleos con Linux. El rendimiento máximo (medido en RPS) muestra una reducción del 2 al 3 %, pero con una mejora del conjunto de trabajo superior al 80 %.
Con DATAS habilitado, el número de recolecciones de elementos no utilizados Gen0 y Gen1 es significativamente mayor.
Cómo deshabilitar DATAS
Si observa una reducción del rendimiento, puede deshabilitar DATAS mediante varias opciones de configuración. Para obtener más información, consulte Adaptación dinámica a tamaños de aplicación (DATAS).