Um grupo de pesquisa co-liderado por Emery Berger, professor de ciência da computação na UMass Amherst, desenvolveu um sistema que eles chamam de Mesh que pode reduzir automaticamente essas demandas de memória. Crédito:UMass Amherst
Aplicativos como navegadores da web ou aplicativos de smartphone geralmente usam muita memória. Para endereçar isto, um grupo de pesquisa co-liderado por Emery Berger, professor de ciência da computação na Universidade de Massachusetts Amherst, desenvolveu um sistema que eles chamam de Mesh que pode reduzir automaticamente essas demandas de memória. Berger apresenta este trabalho hoje na Cppcon, a conferência C ++ em Aurora, Colorado.
Berger e colegas da Faculdade de Informação e Ciência da Computação (CICS) esperam que o Mesh tenha um impacto substancial no mundo da computação, de aplicativos móveis a desktops e data centers, porque ninguém foi capaz de compactar memória em aplicativos escritos ou em execução em linguagens amplamente utilizadas como C, C ++, ou Objetivo C, o idioma usado para aplicativos iOS.
Como explicam os autores, programas escritos em linguagens semelhantes a C podem sofrer de séria fragmentação de memória, onde a memória está quebrada, muito parecido com uma placa de Tetris ruim, Berger diz, portanto, há muitos espaços vazios entre eles. "É assim que a memória é desperdiçada, "ele aponta." Imagine um tabuleiro de Tetris onde você pudesse parar e reorganizá-lo a qualquer momento - isso tornaria o jogo muito mais fácil, porque você sempre pode espremer o espaço vazio. Mas você não pode fazer isso em C, assim como você não pode fazer isso em Tetris. "
O Mesh elimina essas lacunas de maneira eficaz, tirando proveito de um recurso de hardware chamado "memória virtual" que é compatível com quase todos os computadores modernos. "O truque é encontrar pedaços de memória que possam ser intercalados, mais ou menos como engrenagens entrelaçadas, "Berger explica. Quando Mesh encontra esses pedaços, ele pode recuperar a memória de um dos blocos combinando os dois blocos em apenas um. "Esse processo de malha funciona porque só mudamos as coisas na memória 'física'. Do ponto de vista do programa, que só pode ver a memória 'virtual', nada mudou. Isso é poderoso porque podemos fazer isso para qualquer aplicativo automaticamente. "
A equipe relata que os resultados até o momento têm sido extremamente promissores; por exemplo, o uso do Mesh reduz automaticamente as demandas de memória do navegador Firefox em 16%. Para Redis, um popular servidor de estrutura de dados de código aberto, Mesh reduz a demanda de memória em quase 40%.
A equipe do CICS Mesh inclui o professor Emery Berger, um especialista em gerenciamento de memória que projetou o algoritmo no qual o gerenciador de memória do Mac OS X se baseia, professor Andrew McGregor, um especialista em design e análise de algoritmos, e os candidatos ao doutorado Bobby Powers e David Tench. Powers é um candidato ao doutorado do quarto ano que também é engenheiro de infraestrutura na Stripe, e Tench é um candidato ao doutorado do quinto ano com especialização em algoritmos randomizados.
Em um campo onde a "fragmentação catastrófica" foi por muito tempo aceita como inevitável, o software deles é um grande passo à frente, apontam os autores. "Isso é algo que todos pensavam ser impossível, "observa McGregor." Depois que Emery teve sua visão principal, fomos capazes de analisá-lo teoricamente e projetar um algoritmo eficiente para implementar a ideia. Contra quase 50 anos de sabedoria convencional, é ótimo que agora temos uma solução para este importante problema que não funciona apenas na teoria, mas é prático. "
No início deste ano, Berger apresentou detalhes técnicos na conferência ACM SIGPLAN Programming Language Design and Implementation (PLDI '19) em Phoenix. Em resposta ao artigo, O programador e renomado engenheiro da Microsoft Miguel de Icaza twittou que o Mesh é um "trabalho verdadeiramente inspirador, com impacto profundo. Uma bela ideia totalmente desenvolvida. Que contribuição incrível para a indústria. "