Ao longo do último ano, houve um grande esforço no código sysctl do kernel Linux para eliminar cerca de 64 bytes de inchaço por array em todo o kernel. Isso foi alcançado removendo a última entrada “sentinela” sysctl no final de cada array.
Essa mudança não só reduz o tempo de construção do kernel, mas também é uma melhoria significativa. Com o Linux 6.10, a limpeza do sentinel sysctl em diferentes subsistemas está prestes a acontecer.
Limpeza do Sentinel Sysctl
A remoção do último elemento vazio em cada array sysctl está finalmente acontecendo. Por exemplo, a remoção do sentinel sysctl no subsistema de rede foi enfileirada na semana passada.
Por que a Remoção do Sentinel Sysctl é Importante?
Ao remover os elementos sentinel sysctl, evitamos o inchaço do kernel à medida que os arrays ctl_table são movidos para fora do kernel/sysctl.c em seus próprios subsistemas respectivos. Esse movimento começou há muito tempo para evitar conflitos de mesclagem; a remoção do bit sentinel veio depois que Mathew Wilcox sugeriu para evitar o inchaço do kernel por um elemento à medida que os arrays se moviam. Este conjunto de patches reduzirá o tamanho do tempo de construção geral do kernel e o inchaço da memória em tempo de execução em cerca de 64 bytes por array ctl_table declarado.
Economia no vmlinux
Após a remoção, um total de 64 bytes por sentinel é economizado. Eu medi no x86_64 para dar uma ideia das economias agregadas. As economias reais dependerão da configuração individual do kernel. Por exemplo, a configuração “yesall” economiza 3976 bytes, enquanto uma configuração reduzida economiza 1263 bytes.
Economia na memória alocada
Nenhuma economia neste conjunto, mas ocorrerá quando as alocações supérfluas forem removidas do proc_sysctl.c. Eu incluo aqui para contexto. A economia estimada durante a inicialização para a configuração é de 6272 bytes.
É bom ver este trabalho de limpeza do sentinel sysctl culminando após o esforço prolongado ao longo do último ano.
Até a próxima !!
Nenhum comentário:
Postar um comentário