Pausas por recuperación y compactación de memoria Memory compaction / reclaim stalls (THP)
ID de la causa so-reclaim · Responsable principal Infraestructura de servidores (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo)
Mientras el SO compacta la memoria para formar páginas grandes (huge pages) o recupera memoria libre, el proceso se detiene.
Por qué Baja la memoria libre, o la función de páginas grandes (THP) ejecuta una compactación de memoria → Efecto El hilo que pidió memoria espera hasta que terminan la recuperación y la compactación → En pantalla Detenciones irregulares del servidor (de varios ms a cientos de ms)
Cuanto más tiempo lleva encendido, De vez en cuando, al azar
Responsable
Responsable principal Infraestructura de servidores (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Reducir las asignaciones grandes de memoria durante la ejecución (reservar la memoria al arrancar y reutilizarla).
Tareas (Equipo de infraestructura)
Configurar las páginas grandes (THP) para que solo se usen donde hacen falta (madvise), subir el umbral de memoria libre (vm.min_free_kbytes, entre otros).
En el gráfico
Picos aleatorios · Tiempo de tick del servidor, PSI de memoria
Dónde mirar
some y full de /proc/pressure/memory (porcentaje de tiempo detenido esperando memoria) e incremento de compact_stall en /proc/vmstat, junto al tiempo de tick del servidor; revisar la configuración de /sys/kernel/mm/transparent_hugepage/defrag
Se confirma si
En los picos de tick sube el PSI de memoria y aumenta compact_stall. defrag en always
Se descarta si
Si el PSI y compact_stall no cambian, no es esta causa. Si aumenta el uso de swap: “Swap”
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Fuentes
Transparent Hugepage SupportLinux kernel Con defrag=always, cuando falla una asignación THP, se recupera y compacta memoria en ese mismo momento y el proceso se detiene; con madvise, solo en las regiones que lo piden
Documentation for /proc/sys/vm/Linux kernel min_free_kbytes: memoria libre mínima que el kernel mantiene en reserva (marca de agua)
PSI - Pressure Stall InformationLinux kernel some (porcentaje de tiempo en que algunas tareas estuvieron detenidas esperando memoria) y full (porcentaje de tiempo en que todas estuvieron detenidas) de /proc/pressure/memory