Google desativa SegmentHeap no Chrome devido à regressão de desempenho
3 minutos. ler
Publicado em
Leia nossa página de divulgação para descobrir como você pode ajudar o MSPoweruser a sustentar a equipe editorial Saiba mais
Em maio, a Microsoft lançou a atualização do Windows 10 de maio de 2020 para usuários do Windows 10. A nova atualização veio com SegmentHeap que permitiu que aplicativos Win32 melhorassem o uso de RAM. Logo após o lançamento, a Microsoft anunciou que conseguiu reduzir o uso de RAM no Edge usando o novo recurso.
Em junho, o Google também entrou na onda e anunciou ele usará SegmentHeap no manifesto do Chrome, que corrigirá o comportamento de sobrecarga de memória do Chrome. O recurso foi posteriormente habilitado no Chrome v85, mas após mais testes, o Google foi em frente e desativou o recurso no Chrome. o Google notado que o recurso estava causando problemas de desempenho e, portanto, foi desabilitado.
Com commit https://chromium-review.googlesource.com/c/chromium/src/+/2163163 desembarcado, o Windows >= 10.0.19041.0 (Windows 10 versão 2004 e posterior) optará pelo chrome.exe para usar o heap do segmento do heap legado. Mas o que levou à regressão de desempenho para WebXPRT3, Speedometer2 e JetStream2.
A Microsoft, por outro lado, notado que é comum um aplicativo trocar um recurso por outro, de modo que o uso reduzido de memória significou um aumento no uso da CPU. A Microsoft disse ainda que algumas melhorias podem ser feitas para reduzir o impacto.
É prática comum trocar um recurso por outro. Mais frequentemente, é o aumento do uso de memória para reduzir o uso da CPU. Nesse caso, o uso da CPU aumentou drasticamente para reduzir drasticamente o uso de memória ou confirmar com mais precisão. Se você olhasse para o commit que Bruce fez, você teria encontrado o bug que o levou a usar o segmento heap, e isso foi 100% de sobrecarga do uso do heap de baixa fragmentação nos processos do navegador.
https://bugs.chromium.org/p/chromium/issues/detail?id=1014701#c9
Dito isto, há algumas melhorias que podem ser feitas para reduzir o impacto. Eles se dividem em duas áreas, mas nenhuma delas é fácil.
1) Reduza a quantidade de alocações de heap transitórias que o navegador faz. Isso exigirá mudanças significativas em toda a base de código do navegador.
2) Melhore o desempenho do próprio heap do segmento. Isso só pode ser resolvido pela equipe do Windows e estamos investigando nossas opções.No curto prazo, essa é uma boa troca de um recurso por outro, pois o uso de memória/confirmação é um ponto problemático significativo para os usuários do navegador.
Infelizmente, ontem à noite o Google decidido para ir em frente e desabilitar SegmentHeap. Ele foi movido para trás de uma bandeira GN para que a equipe possa continuar experimentando o recurso para que não seja o fim da estrada.
Desative o heap do segmento por padrão e adicione um sinalizador GN para controlá-lo.
Há alguma preocupação de que o custo do heap do segmento não justifique seu custo (consulte crbug.com/1102281). Este CL o desativa por padrão e coloca esse recurso atrás de um sinalizador GN para nos permitir continuar experimentando com ele.
via: Techdows