Google propõe "verificação de tabela de página" para combater alguns tipos de corrupção de memória do Linux

google-corrige-falha-do-kernel-linux-explorada-ativamente

Na semana passada, os engenheiros do Google descobriram um problema de estouro de contagem de referência que afetava todos os kernels do Linux desde a v4.14 em 2017. Esse problema levou ao vazamento de memória de um processo para outro e foi descoberto apenas por acidente. Para lidar com essa classe de problemas de corrupção de memória no futuro, o Google está propondo um novo recurso de “Verificação da Tabela da Página” no futuro para combater alguns tipos de corrupção de memória do Linux.

Esse problema de contagem de referência de página quebrada que levou ao vazamento de memória na v4.14 + foi mesclado para Linux 5.16 e agora voltando às séries estáveis anteriores que ainda são mantidas. Também houve outros problemas de contagem de referência recentemente corrigidos por várias partes. A esperança é que este recurso do kernel de Verificação de Tabela de Página seja capaz de prevenir esta classe de problemas de corrupção de memória no kernel no futuro. Portanto, isso equivale a verificar no momento da inserção das entradas da tabela de página que não há compartilhamento ilegal.

Google propõe “verificação de tabela de página” para combater alguns tipos de corrupção de memória do Linux

O recurso de verificação da tabela de páginas verificará se há compartilhamento ilegal quando as páginas forem inseridas ou removidas para que não haja compartilhamento ilegal decorrente de mapeamento duplo. Se a corrupção for detectada, o kernel irá travar. Além disso, essa verificação extra causa algumas implicações de desempenho, bem como sobrecarga de memória extra.

Devido aos custos de desempenho e memória da Verificação da Tabela de Página proposta, ela estaria desativada por padrão. A ativação exigiria compilar com a opção de compilação PAGE_TABLE_CHECK habilitada, além de inicializar o kernel com o parâmetro page_table_check = on para habilitá-lo em tempo de execução.

Mais detalhes para aqueles interessados neste trabalho que está atualmente em análise como uma “solicitação de comentários” podem ser encontrados na lista de discussão do kernel.

Como parte de uma série de patch separada, também foi enviado na terça-feira um conjunto de páginas de hardening page _refcount pelos mesmos engenheiros do Google envolvidos com a esperança de melhorar a depuração em torno do código de contagem de referência e reduzir os problemas em torno dele, como corrupção de memória.

Linux 5.17 terá grande otimização de desempenho de TCP

Embora a janela de mesclagem do Linux 5.16 tenha acabado de terminar e esse kernel não estará disponível até o final do ano calendário, já para o Linux 5.17 novo material está começando a se acumular nas respectivas árvores de desenvolvimento do subsistema. Um conjunto de mudanças do Google pode fornecer um ganho de desempenho considerável em relação ao desempenho do TCP no datacenter.

Fundidas por David Miller estão essas otimizações TCP de Eric Dumazet, um engenheiro do Google.

A parte mais interessante dessas otimizações é este patch no código TCP para adiar a liberação do SKB após o bloqueio do soquete ser liberado. Descobriu-se que o código do kernel existente introduziu latência excessiva que pode ser evitada ao não realizar a liberação do SKB enquanto o bloqueio do soquete é mantido. Em vez disso, eles serão liberados após o bloqueio do soquete ser liberado ou diretamente do manipulador BH.

Isso resulta em “desempenho muito melhor”, pelo menos para tráfego TCP de alto volume no data center. Em um NIC de 100 Gbit, os testes de throughput de rede TCP com um tamanho de 1500 MTU foram de 55 para 65 Gbit, enquanto para um 4096+ MTU foram de 82 para 95 Gbit.

Embora apenas o TCP seja tocado por enquanto, a mesclagem observa que uma otimização semelhante provavelmente pode ser estendida a outros protocolos. Essas otimizações de TCP serão encontradas no Linux 5.17 no próximo ano.

Via Phoronix

Acesse a versão completa
Sair da versão mobile