Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:Otimização de recuperação de memória para o recurso de classificação de watermark mínimo global do memcg

Última atualização: Jun 29, 2026

Quando tarefas sensíveis à latência e tarefas que consomem muitos recursos são executadas no mesmo host, a alocação súbita de memória pelas tarefas intensivas pode reduzir a memória livre até o watermark mínimo global (global wmark_min), causando variação de desempenho nas tarefas sensíveis à latência. O recurso de classificação de watermark mínimo global do memcg permite definir diferentes limiares de watermark para memory cgroups (memcgs) individuais. Assim, as tarefas sensíveis à latência recebem proteção de memória mais robusta, enquanto as tarefas que consomem muitos recursos são limitadas antes de desestabilizar o sistema.

Versões compatíveis:

SO

Versão mínima do kernel

Alibaba Cloud Linux 2

4.19.91-18.al7

Alibaba Cloud Linux 3

5.10.134-12.al8

Como funciona

Esse recurso expõe a interface memory.wmark_min_adj em cada memcg não raiz. O valor padrão da interface é 0 (herdado do grupo pai na criação) e ela não fica armazenada no diretório raiz do memcg. O valor gravado ajusta o watermark mínimo efetivo desse cgroup como um deslocamento percentual em relação ao intervalo de watermark global. Valores válidos: de -25 a 50.

  • Valor negativo (−25 a −1) — aumenta a prioridade de proteção. O deslocamento é aplicado sobre o intervalo [0, WMARK_MIN], reduzindo o watermark mínimo efetivo do cgroup para abaixo de global wmark_min. A recuperação de memória desse cgroup é adiada, o que diminui a variação de desempenho em tarefas sensíveis à latência. Exemplo: memory.wmark_min_adj=-25 define o WMARK_MIN do cgroup como WMARK_MIN + (WMARK_MIN - 0) × (−25%).

  • Valor positivo (1 a 50) — diminui a prioridade de proteção. O deslocamento é aplicado sobre o intervalo [WMARK_MIN, WMARK_LOW], elevando o watermark mínimo efetivo do cgroup para acima de global wmark_min. A pressão de recuperação de memória sobre esse cgroup aumenta, reduzindo sua qualidade de serviço (QoS) do memcg e impedindo que ele prejudique tarefas de maior prioridade. Exemplo: memory.wmark_min_adj=50 define o WMARK_MIN do cgroup como WMARK_MIN + (WMARK_LOW - WMARK_MIN) × 50%.

Ao atingir o watermark com deslocamento, o sistema aplica limitação. A duração dessa limitação é linearmente proporcional ao excesso de uso de memória, variando entre 1 e 1000 microssegundos.

Valor efetivo em uma hierarquia de memcg multinível

Em um memcg multinível, o kernel calcula um effective memory.wmark_min_adj para cada nó percorrendo todos os níveis ancestrais e selecionando o valor máximo. Nós intermediários com o valor padrão de 0 são excluídos desse cálculo.

Considere a seguinte hierarquia:

         root
         / \
        A   D
       / \
      B   C
     / \
    E   F

A tabela a seguir mostra como os valores configurados correspondem aos valores efetivos em cada nó:

Nível

Valor configurado

Valor efetivo

A

-10

-10

B

-25

-10

C

0

0

D

50

50

E

-25

-10

F

50

50

Para ler o valor efetivo de um cgroup, execute:

cat /sys/fs/cgroup/memory/<Memcg path>/memory.wmark_min_adj

Substitua <Memcg path> pelo caminho raiz do memcg de destino.

Configure a classificação de watermark

Aviso

Modificações inadequadas na QoS do memcg podem causar problemas de desempenho de rede, incluindo congestionamento, aumento da latência de encaminhamento e perda de pacotes. Isso afeta a qualidade e a disponibilidade dos seus serviços. Proceda com cautela.

Pré-requisitos

  • Recomendamos usar este recurso em conjunto com um watermark mínimo global alto. Por exemplo, defina global wmark_min como 2 GB ou mais gravando em /proc/sys/vm/min_free_kbytes.

  • Execute todos os comandos de configuração como usuário root.

Configure um memcg para tarefa sensível à latência

Defina um ajuste negativo para reduzir o watermark efetivo e aumentar a prioridade de proteção de memória do cgroup.

  1. Crie um memcg para a carga de trabalho sensível à latência:

    mkdir /sys/fs/cgroup/memory/test-lc
  2. Defina o ajuste de watermark como -25:

    echo -25 > /sys/fs/cgroup/memory/test-lc/memory.wmark_min_adj

Configure um memcg para tarefa que consome muitos recursos

Defina um ajuste positivo para elevar o watermark efetivo e diminuir a prioridade de proteção de memória do cgroup.

  1. Crie um memcg para a carga de trabalho que consome muitos recursos:

    mkdir /sys/fs/cgroup/memory/test-be
  2. Defina o ajuste de watermark como 25:

    echo 25 > /sys/fs/cgroup/memory/test-be/memory.wmark_min_adj