O Database Autonomy Service (DAS) considera a taxa de fragmentação de memória como um fator em seu recurso de inspeção e pontuação para instâncias Redis. Este tópico explica o que é fragmentação de memória, suas causas, como medi-la e quando tomar medidas corretivas.
Como funciona a fragmentação de memória
A fragmentação de memória ocorre quando há memória livre disponível, mas ela está dividida em segmentos pequenos e não contíguos. Mesmo que a memória livre total ultrapasse N bytes, o sistema operacional não consegue atender a uma solicitação de um bloco contíguo de N bytes — esses segmentos dispersos constituem os fragmentos de memória.
No Tair (Redis OSS-Compatible), os fragmentos de memória não reduzem a memória disponível alocada à sua instância nem geram custos adicionais.
Por exemplo, se uma instância Tair (Redis OSS-Compatible) tem capacidade de 1 GB com 700 MB em uso, os 300 MB restantes (1 GB − 700 MB) permanecem disponíveis mesmo que a taxa de fragmentação de memória atinja 2 — o que significa que os dados ocupam fisicamente 2 GB de memória do sistema.
Causas da fragmentação de memória
A fragmentação de memória tem duas causas principais.
Comportamento do alocador de memória (interna)
O Redis suporta múltiplos alocadores de memória: libc, jemalloc e tcmalloc. O jemalloc é o padrão. Em vez de alocar exatamente a quantidade de memória que uma aplicação solicita, o jemalloc arredonda o valor para o limite de potência de dois mais próximo — 8 bytes, 16 bytes, 32 bytes, 2 KB, 4 KB e assim por diante. A diferença entre a quantidade solicitada e a quantidade alocada torna-se um fragmento.
Rotatividade de pares chave-valor (externa)
Quando pares chave-valor são modificados ou excluídos, a memória que ocupavam é liberada ou redimensionada. Como os blocos alocados raramente correspondem exatamente ao novo tamanho dos dados, as lacunas se acumulam ao longo do tempo.
Verifique a taxa de fragmentação de memória
Execute o seguinte comando no DAS para visualizar detalhes do uso de memória:
INFO memory
A saída inclui:
# Memory
used_memory:350458970752
used_memory_human:326.39G
used_memory_rss:349066919936
used_memory_rss_human:325.09G
…
mem_fragmentation_ratio:1.00
|
Campo |
Descrição |
|
|
Memória que o Redis solicitou para armazenar dados |
|
|
Memória física que o sistema operacional alocou ao Redis, incluindo a sobrecarga de fragmentação |
|
|
Taxa atual de fragmentação de memória |
A taxa é calculada da seguinte forma:
mem_fragmentation_ratio = used_memory_rss / used_memory
Interpretação da taxa
|
Taxa |
Status |
Ação recomendada |
|
1,0–1,5 |
Normal |
Nenhuma ação necessária |
|
> 1,5 |
Alta |
A memória fragmentada excede metade da memória utilizada — investigue e tome medidas corretivas |
Instruções
Leia o conteúdo em inglês para compreender O QUE precisa ser comunicado
Escreva o texto em português do Brasil DO ZERO — esqueça a estrutura das frases em inglês
Preserve toda a formatação markdown, blocos de código, links e imagens exatamente como estão
Tags xref (
<a data-tag="xref" ...>texto</a>) — preserve a tag INTEIRA com todos os atributos na ordem e caixa originais, traduza APENAS o texto visível entre > eAplique todas as regras específicas do idioma rigorosamente
Aplique as regras de stopwords com tolerância zero
Use o modo imperativo em passos numerados e listas de procedimentos
Garanta a consistência terminológica — o mesmo termo deve ter a mesma tradução em todo o documento
Varie os inícios das frases em listas e tabelas — nenhum início deve se repetir 3 vezes ou mais
Retorne APENAS o documento markdown em português do Brasil, sem explicações