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

Apr 02, 2024

3. Projeto CCoW

Nesta seção, primeiro apresentamos nossa motivação por trás do aprimoramento da cópia na gravação e explicamos o conceito básico da cópia na gravação baseada em cobertura (CCoW). Em seguida, explicamos a maneira como o CCoW captura a localidade em diferentes cenários e a otimização para capturar a localidade com baixo overhead.

Memória é a capacidade das pessoas de adquirir, armazenar e recuperar informações. As memórias das pessoas também serão diferentes em diferentes cenários. Neste artigo, exploraremos a relação entre memória em diferentes cenários.

O primeiro é o cenário de aprendizagem. A aprendizagem é um meio importante para os seres humanos adquirirem conhecimentos e habilidades. No processo de aprendizagem, a memória desempenha um papel vital. Se você tiver uma memória forte, poderá dominar novos conhecimentos com mais rapidez e reter o conhecimento aprendido com mais facilidade. Portanto, em cenários de aprendizagem, precisamos manter o pensamento claro e focado, para melhorar melhor a memória.

O segundo é o cenário turístico. Viajar permite-nos conhecer diferentes culturas e ambientes, enriquecendo enormemente os nossos horizontes. Durante as viagens, podemos adquirir um rico conhecimento cultural, lembrando-nos de localizações geográficas, pessoas, costumes e outras informações. Portanto, no cenário das viagens, precisamos observar com atenção e vivenciar ativamente, para melhor melhorar nossa memória.

Mais uma vez, é uma cena de trabalho. No trabalho, precisamos lidar com uma grande quantidade de informações, como dados, contatos, tarefas, planos, etc. Se nossa memória não for forte o suficiente, isso afetará nossa eficiência e realizações no trabalho. Portanto, em cenários de trabalho, precisamos fazer um bom trabalho de registro e organização e tentar estreitar ao máximo a extensão da “conexão de informações”. Desta forma, podemos melhorar melhor a nossa memória.

Finalmente, há cenas de vida. Os humanos precisam se lembrar de muitas coisas diárias, como endereços, números de telefone, tarefas do dia e assim por diante. Se a nossa memória não for boa o suficiente, surgirão muitos problemas na vida. Portanto, nas cenas da vida, precisamos exercitar nossa capacidade de memória. Podemos melhorar nossa memória construindo o pensamento associativo e repetindo silenciosamente.

Resumindo, a memória em diferentes cenários está intimamente relacionada. Podemos melhorar nossa memória e obter melhor desempenho em diversos cenários por meio de prática deliberada e concentração. Vamos buscar uma vida e uma carreira melhores com uma atitude otimista. Percebe-se que precisamos melhorar a memória, e a Cistanche deserticola pode melhorar significativamente a memória, pois a Cistanche deserticola também pode regular o equilíbrio dos neurotransmissores, como aumentar os níveis de acetilcolina e fatores de crescimento. Essas substâncias são muito importantes para a memória e o aprendizado. Além disso, a Cistanche deserticola também pode melhorar o fluxo sanguíneo e promover o fornecimento de oxigênio, o que pode garantir que o cérebro receba nutrientes e energia suficientes, melhorando assim a vitalidade e a resistência do cérebro.

improve working memory

Clique em conhecer suplementos para melhorar a memória

3.1. Motivação

Conforme discutido anteriormente, o mecanismo copy-on-write desempenha um papel fundamental na implementação de recursos de memória virtual em sistemas operacionais modernos. No entanto, suas vantagens em termos de espaço têm diminuído em ambientes de computação modernos e em cargas de trabalho com uso intensivo de gravação, comuns em data centers [21,22].

Tecnologias de memória emergentes, como memória de armazenamento (SCM) e memória persistente, permitem maior densidade de dados para módulos de memória e, ao mesmo tempo, reduzem o custo por unidade de dados.

Hoje em dia, construir um nó com uma enorme quantidade de memória na escala de terabytes tornou-se mais barato do que nunca. Além disso, os provedores de serviços em nuvem relataram que os nós nos data centers estão sofrendo com baixa utilização de memória, deixando 40–50% da memória não utilizada [23–26]. Nesta situação, torna-se viável trocar espaço de memória por desempenho em sistemas de desempenho crítico [27]. As vantagens em termos de desempenho também têm diminuído.

O benefício de desempenho da cópia na gravação pode ser caracterizado pela frequência e pelo desempenho do tratamento de falhas de página. Ao gerar um processo filho, a permissão de gravação para todas as páginas é eliminada. Do ponto de vista da correção, isso é inevitável; entretanto, isso leva a falhas freqüentes de página após a bifurcação, no atendimento de cada solicitação de gravação. Essa tempestade de falhas de página de gravação não acontece apenas com processos filhos, mas também com o processo pai.

Para piorar, o tempo de tratamento de falhas de página não melhorou recentemente, mas tende a ser prolongado por motivos de segurança. No passado, todo o espaço de endereço do kernel era mapeado persistentemente para uma parte do espaço de endereço do processo do usuário.

Entretanto, esse layout de espaço de endereço permite que processos de usuários maliciosos leiam indiretamente os dados críticos no espaço de endereço do kernel, explorando a execução especulativa nos processadores [28,29].

Para mitigar essa vulnerabilidade crítica de segurança, os sistemas operacionais modernos empregam isolamento de tabela de páginas do kernel (KPTI). Em geral, apenas uma parte limitada do espaço de endereço do kernel é mapeada para o espaço de endereço do processo, e o restante do espaço de endereço do kernel é mapeado e não mapeado dinamicamente durante a interrupção e o tratamento de chamadas do sistema. Isto deve ser acompanhado pela limpeza do TLB, que pode degradar significativamente o desempenho do sistema.

Neste trabalho, pretendemos reduzir a sobrecarga de cópia na gravação, aproveitando a localidade espacial das referências de memória. Atualmente, a cópia na gravação ocorre por página e, sempre que ocorre uma falha de página, o sistema operacional deve ser envolvido. Nossa ideia principal é reduzir a frequência de envolvimento do sistema operacional, aproveitando a localidade espacial dos acessos à memória. Se uma página for acessada para gravação, as páginas próximas também provavelmente serão acessadas para gravação em breve.

Assim, se executarmos a cópia na gravação não apenas para a página defeituosa, mas também para as páginas próximas em conjunto (ou seja, pré-copiar as páginas próximas), poderemos amortizar a sobrecarga da cópia na gravação durante o tratamento da falha de página. Nós, no entanto, devemos ter cuidado para não copiar sempre cegamente todas as páginas próximas.

Se as páginas copiadas forem escritas posteriormente, a sobrecarga incorrida na pré-cópia será reembolsada. No entanto, se as páginas copiadas não forem escritas posteriormente, a pré-cópia apenas incorrerá em sobrecarga adicional em termos de tempo e espaço.

ways to improve your memory

Assim, é crucial identificar as páginas de destino adequadas para copiar. Abordagens semelhantes foram empregadas para minimizar a sobrecarga de tratamento de falhas de página. O Linux emprega o chamado recurso de 'falha em torno'. Ao lidar com uma falha de página, o Linux inicia o tratamento de falha de página para as páginas que estão ao redor da página com falha [2]. Este recurso, no entanto, só é aplicado às falhas de leitura de página para regiões de memória com suporte de arquivo.

Dado que a ideia proposta se concentra em escrever falhas de página para páginas anônimas, podemos argumentar que nossa abordagem é diferente do recurso de falha. Muitos designs de última geração [12–17] foram propostos para otimizar o uso de páginas enormes no sistema operacional.

Esses sistemas, em comum, apresentam um esquema para identificar as melhores páginas candidatas a serem convertidas em páginas enormes e para promover com eficiência (ou seja, converter páginas base em uma página enorme) ou rebaixar (ou seja, converter uma página enorme em páginas base) páginas enormes.

No entanto, independentemente dos esquemas propostos, a cópia na gravação é executada apenas na granularidade da página base, após quebrar a página enorme em páginas base, se necessário. Assim, suas características de desempenho de cópia na gravação são as mesmas do sistema Linux padrão com o mecanismo de página enorme transparente (THP). Em contraste, nosso esquema proposto é único, pois executa cópia na gravação em uma granularidade diferente de acordo com o grau de localidade nos acessos à memória.

3.2. Identificando a localidade espacial

Para concretizar o esquema proposto, devemos considerar duas questões desafiadoras. Em primeiro lugar, as páginas de destino devem ser identificadas de forma precisa e oportuna, de modo que o benefício da pré-cópia seja maximizado e a sobrecarga da pré-cópia seja minimizada.

Depois que uma página é copiada por um redator, a página não acionará mais nenhuma falha de página. Isto significa efetivamente que o sistema perdeu a oportunidade de otimizar o acesso de gravação. Assim, o sistema deve ser capaz de prever o uso futuro da página para determinar quais páginas devem ser copiadas e quais não devem. Em segundo lugar, a identificação das páginas de destino deve ter uma sobrecarga baixa, uma vez que o sistema operacional não pode permitir um processamento demorado no subsistema de gerenciamento de memória de desempenho crítico.

Conforme discutido na Seção 2, muitos recursos de memória virtual em sistemas operacionais modernos são baseados no mecanismo de cópia na gravação. Assim, a sobrecarga pode facilmente superar o benefício da cópia na gravação otimizada se a implementação geral não for suficientemente eficiente.

Para prever o futuro de uma página, primeiro coletamos o histórico de bifurcações dos processos do usuário. Especificamente, o sistema operacional monitora o número de bifurcações que cada processo invoca. Uma contagem baixa para um processo implica que há poucas oportunidades de explorar o processo e o sistema operacional não precisa rastrear totalmente as falhas de gravação de página desse processo.

Em contraste, quando um processo invoca a chamada do sistema fork mais do que um limite, o sistema pode esperar a oportunidade de otimização. Isso acontece com o Redis, que invoca bifurcações periodicamente para tirar instantâneos da memória, ou com o script shell que bifurca vários comandos de linha de comando. Em resposta, o sistema começa a rastrear as falhas de página do processo.

improve brain

A seguir, propomos um método para prever a oportunidade de otimização a partir do histórico, assumindo que o comportamento geral das aplicações não muda significativamente. Para isso, dividimos o espaço de endereçamento do processo em regiões de tamanho fixo. Cada região mantém um bitmap, onde cada bit corresponde a uma página da região. Um processo é gerado com todos os bitmaps limpos, como acontece com áreas de memória virtual (VMAs) recém-preenchidas. Quando uma parte ou todo o VMA não é mapeado, os bitmaps no intervalo de endereços correspondente também são liberados.

O bitmap é alocado apenas para as partes do VMA que são preenchidas e as informações da página de 4 KB são resumidas em um bit. Assim, a sobrecarga de espaço para os bitmaps é de aproximadamente 0,003% do espaço de endereço preenchido. Inicialmente, as gravações são processadas por meio da cópia na gravação como estão.

Um acesso de gravação é capturado no manipulador de falhas de página, onde a entrada de bitmap correspondente é definida. Com o tempo, o bitmap captura efetivamente os acessos à região, e podemos quantificar o grau de cobertura. A cobertura de uma região é calculada como a porcentagem de páginas copiadas de todas as páginas da região, como segue:

improve cognitive function

Suponha que um sistema use páginas de 4 KB e o espaço de endereço esteja dividido em regiões de 2 MB.

Cada região terá 512 4 páginas KB. Se 300 páginas forem copiadas em gravações, a cobertura da região será 300/512 × 100=58,6%. Quanto maior a cobertura de uma região, mais ela poderá se beneficiar da oportunidade de otimização da pré-cópia. Essas informações de cobertura são transportadas pela bifurcação e usadas como métrica para determinar o benefício de copiar páginas próximas.

Especificamente, se uma região de memória tiver alta cobertura, as páginas da região provavelmente serão eventualmente copiadas. Assim, seria benéfico pré-copiar outras páginas na região enquanto processava uma falha de gravação de página para uma página. Considerando que a oportunidade de otimização na pré-cópia de páginas é pequena se a cobertura for baixa. Assim, apenas a página defeituosa é copiada pelo manipulador de pagefault.

Doravante, nos referiremos a esse esquema como cópia na gravação baseada em cobertura ou CCoW no restante do artigo. A Figura 1 ilustra o conceito de CCoW. Existem duas regiões, regiões 0 e 1, cada uma compreendendo seis páginas. 

As páginas com tonalidade verde são preenchidas com copy-on-write. Quando o processo invoca a chamada de sistema fork, permissão de gravação para todas as páginas, incluindo as verdes, serem descartadas durante a bifurcação. Suponhamos que o limite para determinar a região de alta localidade seja de 60%. Na região 0, quatro páginas (páginas 1, 2, 3 e 4) foram copiadas na gravação antes da bifurcação, fornecendo uma cobertura de 4/6=66%.

Assim, esta região é considerada de alta localidade espacial, e todas as páginas são copiadas para tratar a falha de página da página 3, conforme sombreado em vermelho. Considerando que a região inferior fornece uma cobertura de 33%, já que duas em cada seis páginas foram copiadas antes da bifurcação.

Portanto, esta região tem uma cobertura inferior ao limite, implicando na baixa localidade espacial da região. Assim, quando a página 9 é acessada para gravação, apenas a página defeituosa é copiada na gravação no manipulador de falhas de página, assim como o procedimento normal de cópia na gravação.

improve memory


For more information:1950477648nn@gmail.com

Você pode gostar também