CCoW: Otimizando Copy-on-Write Considerando a Localidade Espacial em Cargas de Trabalho Parte 1

Apr 02, 2024

Abstrato:

Copy-on-write (CoW) é uma técnica essencial de gerenciamento de memória que permite o compartilhamento eficiente de páginas entre processos. Especificamente, combinando CoW com a chamada de sistema fork, os aplicativos, mesmo com um grande consumo de memória, podem tirar um instantâneo dos dados atuais na memória com baixa sobrecarga.

Dados de memória referem-se a dados armazenados na memória do computador. Embora seja diferente da memória humana, existe uma certa ligação entre as duas.

Primeiro, os dados da memória podem promover o desenvolvimento da memória humana. Por exemplo, podemos usar as funções de gravação, armazenamento e recuperação dos computadores para nos ajudar a aprender, lembrar e compreender o conhecimento. A tecnologia moderna nos fornece maneiras mais eficientes de lembrar e aprender, o que garante que possamos dominar melhor conhecimentos e habilidades.

Em segundo lugar, os dados da memória também podem ajudar as pessoas a gerir melhor as suas memórias. Ao organizar e classificar os dados de maneira organizada, podemos encontrar e recuperar mais rapidamente as informações de que precisamos, o que é muito importante para nossa vida, trabalho e estudo.

Mais importante ainda, os dados na memória evitam a perda de memória humana. A memória humana enfraquece gradualmente com o tempo, um processo denominado “esquecimento”. No entanto, ao armazenar dados no disco rígido de um computador, podemos garantir que as informações e memórias de que necessitamos podem ser retidas e recuperadas a qualquer momento.

Portanto, pode-se dizer que a relação entre os dados da memória e a memória humana é positiva. Embora não devamos confiar muito na tecnologia, o uso razoável dos dados da memória pode melhorar a eficiência do nosso trabalho e os resultados de aprendizagem, ajudar-nos a gerir melhor a memória e evitar o esquecimento. Percebe-se que precisamos melhorar a memória, e a Cistanche deserticola pode melhorar significativamente a memória porque a Cistanche deserticola é um material medicinal tradicional chinês que tem muitos efeitos únicos, um dos quais é melhorar a memória. A eficácia da Cistanche deserticola vem dos múltiplos ingredientes ativos que contém, incluindo ácido tânico, polissacarídeos, glicosídeos flavonóides, etc.

improve memory

Clique em conhecer 10 maneiras de melhorar a memória

No entanto, como o CoW ocorre por página no manipulador de falhas de página, cada vez que a falha de página ocorre, o sistema operacional deve ser envolvido. Isso leva a uma degradação significativa do desempenho para cargas de trabalho com uso intenso de gravação.

Este artigo propõe copy-on-write (CCoW) baseado em cobertura, um esquema CoW otimizado considerando a localidade nos acessos à memória para mitigar o problema de CoW. CCoW mede a localidade espacial em espaços de endereço de processo com o conceito de cobertura.

Ao processar o CoW, o CCoW copia várias páginas antecipadamente para regiões de memória de alta localidade, minimizando assim o envolvimento do sistema operacional para cargas de trabalho com uso intensivo de gravação. Explicamos os desafios para medir a localidade e fornecemos a otimização para implementar o conceito.

A avaliação com um protótipo demonstra que essa abordagem pode melhorar o desempenho geral dos aplicativos em até 10% com uma pequena quantidade de sobrecarga de memória.

Palavras-chave: copy-on-write; sistema de memória virtual; garfo; Redis; falha de página.

1. Introdução

A função principal de um sistema operacional (SO) é gerenciar recursos preciosos do sistema, e copy-on-write (CoW) é uma das técnicas de gerenciamento de memória mais fundamentais adotadas pela maioria dos sistemas operacionais contemporâneos.

Quando dois ou mais processos precisam ter os mesmos dados, o esquema CoW permite que os processos compartilhem as mesmas páginas em vez de duplicá-las imediatamente. As páginas compartilhadas são duplicadas sob demanda, somente quando um dos processos grava nas páginas compartilhadas.

Os sistemas de memória virtual podem efetivamente fornecer compartilhamento de dados entre processos, e vários recursos de memória virtual, como duplicação do espaço de endereço durante bifurcações de processos, desduplicação das mesmas páginas e compartilhamento zero de páginas, são implementados com base na cópia na gravação [1–3]. Devido a esses recursos, os aplicativos podem fazer uma cópia de si mesmos com pouca sobrecarga de espaço e usar o clone de maneira adequada.

Por exemplo, Redis, um dos populares sistemas de armazenamento de valor-chave na memória [4], usa cópia na gravação em conjunto com o sistema fork para chamar dados persistentes na memória para o armazenamento. Ao atender solicitações de entrada, o processo principal do Redis gera periodicamente um processo filho com a bifurcação. O processo filho começa com um instantâneo de memória idêntico ao processo principal para salvar os dados da memória no armazenamento.

short term memory how to improve

Como o instantâneo é isolado do espaço de endereço do processo principal, mas gerenciado pela cópia na gravação, os processos principal e filho não requerem nenhum mecanismo complicado para manter a consistência entre os dados atuais e o instantâneo.

Assim, podemos considerar que a cópia na gravação é essencial no sistema de memória virtual. No entanto, a cópia na gravação atual é problemática em aplicações com uso intensivo de memória e cargas de trabalho com uso intensivo de gravação. Especificamente, a duplicação de dados geralmente ocorre no manipulador de pagefault no sistema operacional. Como a duplicação de dados é processada por página, com diversas escritas, o processo pode incorrer em um número considerável de falhas de página.

O sistema operacional está envolvido em cada falha de página, resultando em trocas frequentes de modo kernel do usuário. Considerando o enorme consumo de memória de aplicativos com uso intensivo de memória, o número de alternâncias de modo é grande.

Além disso, a tabela de páginas é modificada durante a duplicação, o que leva à redução do buffer look-aside de tradução (TLB) de todos os núcleos do sistema. Tudo isso acarreta despesas não negligenciáveis ​​e deteriora o desempenho dos aplicativos.

Este artigo propõe cópia na gravação baseada em cobertura (CCoW), um novo esquema de otimização de cópia na gravação. Quando uma página é acessada para escrita, é provável que suas páginas próximas também sejam acessadas em breve para escrita devido à localidade espacial nos acessos à memória. CCoW explora a localidade espacial para reduzir o número de falhas de página para cópia na gravação. Especificamente, o CCoW processa a cópia na gravação em uma grande granularidade (chamada região).

Ao copiar múltiplas páginas no manipulador de falhas de página, o CCoW pode reduzir um número considerável de falhas de página para cópia na gravação e sobrecargas associadas. No entanto, o grau de localidade espacial varia amplamente, dependendo da localização no espaço de endereço do processo, e a duplicação das partes de memória de baixa localidade incorre apenas em despesas gerais em termos de tempo e espaço.

Para superar esta deficiência, propomos um mecanismo preciso de baixo overhead para avaliar a localidade espacial no espaço de endereço do processo. CCoW conta o número de cópias nas gravações e gravações em cada região.

Ao transportar as informações de localidade sobre bifurcações, podemos estimar o grau de localidade espacial, e o CCoW efetivamente executa a pré-cópia apenas para regiões de alta localidade. Implementamos o esquema CCoW proposto no kernel Linux.

Integrados ao sistema de memória virtual do sistema operacional, os aplicativos podem se beneficiar do CCoW sem modificação. Analisamos as características de desempenho com um microbenchmark, e a avaliação usando o benchmark com cargas de trabalho realistas mostra que o CCoW pode melhorar o desempenho do aplicativo em até 10% com uma quantidade razoável de sobrecarga de memória.

ways to improve memory

O restante deste trabalho está organizado da seguinte forma. Na Seção 2, apresentamos uma visão geral do histórico e do trabalho relacionado ao artigo, incluindo a memória virtual e o fork. Explicamos os detalhes do desenho do CCoW e sua implementação na Seção 3. A Seção 4 apresenta os resultados da avaliação do CCoW. Por fim, concluímos este artigo na Seção 5.

2. Antecedentes e Trabalhos Relacionados

2.1. Paginação e memória virtual

Quase todos os computadores e sistemas operacionais modernos adotam paginação e memória virtual como seu principal esquema de gerenciamento de memória [5]. A memória principal é dividida em páginas do mesmo tamanho e os sistemas operacionais alocam ou desalocam memória dos processos do usuário na unidade de paginação.

Os sistemas operacionais também mantêm os mapeamentos dos espaços de endereço dos processos para a localização física no sistema. Cada página lógica no espaço de endereço do processo é mapeada para sua localização física e esse mapeamento é armazenado na forma de uma tabela de páginas.

Para lidar com a referência de memória para um processo, uma unidade de gerenciamento de memória (MMU), um componente de hardware no processador, traduz o endereço solicitado em seu endereço físico, referindo-se à tabela de paginação. A tabela de páginas compreende entradas da tabela de páginas (PTEs). Cada PTE contém as informações de mapeamento e pode ter campos adicionais para descrever o status da página correspondente e do mapeamento.

O tamanho da página, embora específico da arquitetura, é geralmente de 4 KB na maioria das arquiteturas. Isso implica que cada 4 KB no espaço de endereço do processo deve ter um PTE. Considerando o enorme tamanho do espaço de endereçamento do processo, o tamanho da tabela de páginas, mesmo para um único processo, pode ser enorme.

Por exemplo, a tabela de páginas para um processo em arquitetura de 64- bits com páginas de 4 KB e PTE de 8- bytes teria 32 PB (264/212 × 8=255 bytes) de tamanho. Entretanto, o espaço de endereço geralmente é escassamente preenchido e a maior parte do espaço de endereço não é necessária.

Isso esclarece a organização hierárquica da tabela de páginas. A tabela de páginas inteira é dividida em partes da tabela de páginas que cabem em uma página. As partes da tabela de páginas não são alocadas para regiões de endereço não alocadas.

memory enhancement

As partes da tabela de páginas preenchidas podem ser resumidas como partes da tabela de páginas de nível superior. Essa indireção é repetida até que existam apenas partes em uma página, permitindo assim uma forma compacta de tabelas de páginas.


For more information:1950477648nn@gmail.com

Você pode gostar também