A partir da versão do kernel 4.19.91-22.al7, o Alibaba Cloud Linux 2 e todas as versões do Alibaba Cloud Linux 3 relatam Active(anon) e Inactive(anon) de forma diferente no arquivo /proc/meminfo. Se suas aplicações ou ferramentas de monitoramento dependem desses campos, os valores observados não corresponderão aos dados históricos coletados antes da atualização.
O que Active(anon) e Inactive(anon) monitoram
No arquivo /proc/meminfo, os campos Active(anon) e Inactive(anon) rastreiam a memória com suporte a swap, principalmente mapeamentos anônimos como memória heap e stack alocada por aplicações (por exemplo, via malloc()). Juntos, eles compõem os totais de Active e Inactive:
Active(anon): memória anônima acessada recentemente e com menor probabilidade de recuperação pelo kernel.Inactive(anon): memória anônima sem acesso recente e candidata à recuperação.
O que mudou
A comunidade do kernel Linux alterou o posicionamento de páginas anônimas recém-alocadas nas listas LRU (menos recentemente usadas) no Linux Kernel 5.10 (commit b518154e59aab3ad0780a169c5cc84bd4ee4357e). Antes dessa modificação, o sistema inseria essas páginas na lista LRU ativa por padrão. Após a mudança, elas passam para a lista LRU inativa e só migram para a lista ativa após o acesso.
A Alibaba Cloud incorporou essa alteração upstream nas seguintes versões:
Alibaba Cloud Linux 2 a partir da versão do kernel
4.19.91-22.al7.x86_64Alibaba Cloud Linux 3 (todas as versões)
A tabela a seguir mostra as diferenças na contabilização de páginas anônimas entre as versões do kernel.
|
Versão do kernel |
Posicionamento padrão de páginas anônimas recém-alocadas |
**Movido para |
**Movido para |
|
Alibaba Cloud Linux 2 anterior a |
|
N/A — já ativo por padrão |
A memória é insuficiente |
|
Alibaba Cloud Linux 2 |
|
As páginas são acessadas posteriormente |
N/A — já inativo por padrão |
Para verificar se o seu kernel inclui essa alteração, execute:
uname -r
Se a saída for 4.19.91-22.al7.x86_64 ou posterior (para Alibaba Cloud Linux 2) ou qualquer versão do Alibaba Cloud Linux 3, o novo comportamento estará em vigor.
Impactos potenciais
Essa alteração afeta qualquer sistema que monitore ou tome decisões com base nos valores de Active(anon) ou Inactive(anon) no arquivo /proc/meminfo. Os cenários mais comuns incluem:
Monitoramento e alertas de memória: limiares de alerta baseados em
Active(anon)podem ser acionados inesperadamente após uma atualização do kernel. A mesma carga de trabalho agora apresenta um valor maior deInactive(anon)e menor deActive(anon), mesmo que o uso total de memória permaneça inalterado.Gerenciamento de memória no nível da aplicação: aplicações que leem
/proc/meminfopara determinar pressão de memória e ajustar seu comportamento, como políticas de evicção de cache, podem operar de maneira diferente após a atualização.Planejamento de capacidade e painéis: dados históricos de tendências para
Active(anon)eInactive(anon)exibirão uma descontinuidade no momento da atualização do kernel, o que pode tornar enganosas as comparações entre os períodos anterior e posterior.
O que fazer
Revise como suas aplicações e ferramentas de monitoramento utilizam Active(anon) e Inactive(anon) e faça ajustes conforme o cenário:
Monitoramento e alertas de memória: recalibre os limiares com base nos valores observados após a atualização do kernel. A distribuição entre
Active(anon)eInactive(anon)mudou, mesmo que o uso total de memória seja o mesmo.Aplicações que leem /proc/meminfo: reavalie qualquer lógica baseada nos valores de
Active(anon)ouInactive(anon)para confirme que ela reflete o novo comportamento padrão de posicionamento.Painéis históricos: marque o evento de atualização do kernel em sua linha do tempo para distinguir a alteração estatística de uma mudança real na carga de trabalho.