Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:Política de prioridade OOM do memcg

Última atualização: Aug 31, 2026

O Alibaba Cloud Linux 2, a partir da versão do kernel 4.19.91-18.al7, e o Alibaba Cloud Linux 3, a partir da versão do kernel 5.10.60-9.al8, oferecem suporte ao recurso de política de prioridade de out-of-memory (OOM) do subsistema de memória (memcg). Este tópico descreve as interfaces desse recurso e apresenta um exemplo de configuração.

Informações básicas

Nos sistemas de kernel atuais, quando a pressão de memória é alta, o kernel percorre os cgroups para recuperar memória daqueles que mais consomem. Se a recuperação falhar, o kernel pode acionar um evento de out-of-memory (OOM) e encerrar todas as tarefas nesse cgroup. Isso pode impactar severamente serviços críticos em execução no cgroup. Portanto, é fundamental proteger a memória de cgroups com serviços críticos contra recuperação ou garantir que as tarefas nesses cgroups sobrevivam a eventos de OOM. Assim, o kernel consegue selecionar outros cgroups para recuperação de memória ou eliminação por OOM.

Para resolver esse problema, o Alibaba Cloud Linux inclui um recurso de configuração de prioridade de out-of-memory (OOM) do memcg. Durante uma operação de OOM, esse recurso determina as prioridades dos cgroups e seleciona um cgroup de baixa prioridade para a operação.

Funcionalidade da interface de prioridade OOM do memcg

Interface

Descrição

memory.use_priority_oom

Especifica se o recurso de política de prioridade OOM do memcg está ativado. Os valores válidos são 0 e 1. Essa configuração não é herdada pelos cgroups filhos. O valor padrão é 0.

  • 0: Desativa o recurso de política de prioridade OOM do memcg.

  • 1: Ative o recurso de política de prioridade OOM do memcg.

memory.priority

Defina a prioridade do memcg para suportar cargas de trabalho de diferentes níveis de importância. Existem 13 níveis de prioridade. Os valores válidos variam de 0 a 12. Um valor maior indica uma prioridade mais alta. Essa configuração não é herdada pelos cgroups filhos. O valor padrão é 0.

  • Implementa um nível de Quality of Service (QoS) de memória. O valor de prioridade não é uma variável global; serve apenas para comparação entre nós irmãos sob o mesmo cgroup pai.

  • Para nós irmãos com a mesma prioridade, o kernel os classifica pelo uso de memória. A operação de OOM ocorre no nó com maior uso de memória.

Exemplo de configuração da interface

Este exemplo demonstra como crie seis nós filhos de cgroup: A, B, C, D, E e F. Ative a interface memory.use_priority_oom e defina as prioridades de OOM usando a interface memory.priority.

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

Os valores da interface para cada nível têm o seguinte mapeamento:

  • A: 10

  • B: 8

  • C: 5

  • D: 6

  • E: 7

  • F: 8

  1. Conecte-se remotamente à instância ECS.

    Para mais informações, consulte Connect to a Linux instance using Workbench.

  2. Execute os comandos a seguir para crie dois nós de cgroup, A e B, e ativar o recurso de política de prioridade OOM do memcg.

    mkdir /sys/fs/cgroup/memory/A
    cd /sys/fs/cgroup/memory/A
    echo 1 >memory.use_priority_oom
    mkdir /sys/fs/cgroup/memory/B
    cd /sys/fs/cgroup/memory/B
    echo 1 >memory.use_priority_oom
  3. Defina a prioridade OOM do memcg do nó A como 10 e do nó B como 8 executando os seguintes comandos.

    cd /sys/fs/cgroup/memory/A
    echo 10 > memory.priority
    cd /sys/fs/cgroup/memory/B
    echo 8 > memory.priority
  4. Crie os nós filhos C e D sob o nó A e os nós filhos E e F sob o nó B. Em seguida, ative o recurso de política de prioridade OOM do memcg com os comandos abaixo.

    mkdir /sys/fs/cgroup/memory/A/C
    cd /sys/fs/cgroup/memory/A/C
    echo 1 >memory.use_priority_oom
    mkdir /sys/fs/cgroup/memory/A/D
    cd /sys/fs/cgroup/memory/A/D
    echo 1 >memory.use_priority_oom
    mkdir /sys/fs/cgroup/memory/B/E
    cd /sys/fs/cgroup/memory/B/E
    echo 1 >memory.use_priority_oom
    mkdir /sys/fs/cgroup/memory/B/F
    cd /sys/fs/cgroup/memory/B/F
    echo 1 >memory.use_priority_oom
  5. Configure as prioridades OOM do memcg para os nós filhos C, D, E e F como 5, 6, 7 e 8, respectivamente, utilizando os comandos a seguir.

    cd /sys/fs/cgroup/memory/A/C
    echo 5 > memory.priority
    cd /sys/fs/cgroup/memory/A/D
    echo 6 > memory.priority
    cd /sys/fs/cgroup/memory/B/E
    echo 7 > memory.priority
    cd /sys/fs/cgroup/memory/B/F
    echo 8 > memory.priority

Ao acionar um erro de OOM com a conta root, o sistema inicia uma consulta iterativa a partir de A e B. Como a prioridade de B é menor que a de A, o sistema continua a consultar E e F sob B. O sistema identifica que E tem a menor prioridade entre os cgroups filhos e aciona um erro de OOM em E.