Facebook propuxo un novo mecanismo de xestión de memoria de placas para o núcleo de Linux

Roman Gushchin (Roman Gushchin) de Facebook publicado na lista de correo dos desenvolvedores do núcleo de Linux un conxunto de parches coa implementación dun novo controlador de asignación de memoria lousa (controlador de memoria Slab). O novo controlador destaca por mover a contabilidade de losas do nivel de páxina de memoria ao nivel de obxectos do núcleo, o que fai posible compartir páxinas de losas en diferentes cgroups, en lugar de asignar cachés de losas separadas para cada cgroup.

O enfoque proposto fai posible aumentar a eficiencia do uso do forxado, reducir o tamaño da memoria empregada nun 30-45% e reducir significativamente o consumo total de memoria do núcleo. Ao reducir o número de lousas non móbiles, tamén hai un efecto positivo na redución da fragmentación da memoria. O novo controlador de memoria simplifica significativamente o código para contabilizar as placas e non require o uso de algoritmos complicados para crear e eliminar dinámicamente cachés de lousas para cada cgroup. Todos os cgroups de memoria na nova implementación usan un conxunto común de cachés de losas, e a vida útil das cachés de losas xa non está ligada á vida útil das instaladas a través do cgroup. restricións sobre o uso da memoria.

A contabilidade de recursos máis precisa implementada no novo controlador de lousa debería teoricamente cargar máis a CPU, pero na práctica as diferenzas resultaron ser insignificantes. En particular, o novo controlador de lousa utilizouse durante varios meses en servidores de produción de Facebook que manexan diferentes tipos de carga de traballo e aínda non se identificaron regresións notables. Ao mesmo tempo, hai unha redución significativa no consumo de memoria: nalgúns hosts foi posible aforrar ata 1 GB de memoria, pero este indicador depende moito da natureza da carga, o tamaño total da RAM, o número de CPU. e as características do traballo coa memoria. Probas previas amosou redución do consumo de memoria en 650-700 MB (42% da memoria de placa) no front-end web, 750-800 MB (35%) no servidor cunha caché de DBMS e 700 MB (36%) no servidor DNS.

Fonte: opennet.ru

Engadir un comentario