O recurso de qualidade de service (QoS) do grupo de controle de memória (memcg) foi projetado para gerenciar recursos de memória e otimizar o uso de memória em sistemas operacionais Linux. Utilize esse recurso para reservar uma quantidade específica de memória e atender aos requisitos de services ou aplicações críticas. Também é possível definir um limite máximo de uso de memória para evitar instabilidade no sistema causada por tarefas que consomem muita memória. Nas versões comunitárias do kernel Linux, apenas a interface cgroup v2 oferece suporte ao recurso de QoS do memcg. No Alibaba Cloud Linux 2, a partir da versão do kernel 4.19.91-18.al7, e no Alibaba Cloud Linux 3, a interface cgroup v1 também suporta esse recurso.
Informações básicas
Por padrão, o recurso memcg QoS vem ativado na interface cgroup v1 do kernel do Alibaba Cloud Linux. Para obter mais detalhes sobre o recurso memcg QoS, consulte Documentation/admin-guide/cgroup-v2.rst. Você pode obter a documentação do kernel nos pacotes Debuginfo e source code do Alibaba Cloud Linux. Para mais informações, visualize Use Alibaba Cloud Linux 2.
Observações de uso
Ao utilizar o recurso de QoS do memcg na interface cgroup v1, recomenda-se colocar as tarefas em um nó folha do memcg. Exemplo de caminho de tarefa: /sys/fs/cgroup/memory/<nó intermediário>/<nó folha>/tasks.
Descrição da interface
A tabela a seguir descreve as interfaces que implementam o recurso de QoS do memcg na interface cgroup v1 do kernel do Alibaba Cloud Linux.
Interface | Descrição |
memory.min | Reserva de forma absoluta uma quantidade específica de memória. A memória reservada por esta interface não pode ser recuperada, mesmo que o sistema não tenha outra memória disponível para recuperação. Isso garante que os processos no cgroup obtenham a quantidade mínima especificada de memória e evita a degradação do desempenho do service. Esta interface é adequada para services que exigem uma quantidade mínima garantida de memória residente para atender aos requisitos de desempenho. As operações de leitura e gravação são as seguintes:
|
memory.low | Efetua uma reserva relativa de uma quantidade específica de memória. A memória reservada por esta interface pode ser parcialmente recuperada se o sistema não tiver outra memória disponível. Dessa forma, o sistema ajusta a alocação de memória de maneira mais adequada quando os recursos são insuficientes. Mais indicada para services que precisam de proteção básica, mas não exigem proteção absoluta, como aplicações de negócios não críticas e tarefas em segundo plano. É possível realizar as seguintes operações de leitura e gravação na interface:
|
memory.high | Limita o uso de memória. As operações de leitura e gravação disponíveis nesta interface incluem:
|
Exemplos de API
No Alibaba Cloud Linux 3, aloque memória ou especifique um limite máximo de uso de memória no diretório de montagem do memcg, como /sys/fs/cgroup/memory/.
Execute os comandos a seguir apenas como usuário root.
Comandos de exemplo:
-
Crie o diretório test_memcg executando o comando abaixo:
mkdir /sys/fs/cgroup/memory/test_memcg -
Reserve uma quantidade específica de memória de forma absoluta.
-
Execute o seguinte comando para reservar absolutamente 200 MB de memória.
echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.min -
Visualize o resultado com o comando a seguir.
cd /sys/fs/cgroup/memory/test_memcg cat memory.min
-
-
Faça uma reserva relativa de uma quantidade específica de memória.
-
Defina a memória reservada absoluta como 200 MB usando o comando abaixo.
echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.low -
Verifique o resultado executando o seguinte comando.
cd /sys/fs/cgroup/memory/test_memcg cat memory.low
-
-
Especifique um limite superior para o uso de memória.
-
Configure o limite máximo de uso de memória para 1 GB com este comando.
echo 1073741824 > /sys/fs/cgroup/memory/test_memcg/memory.high -
Visualize a saída gerada pelo comando a seguir.
cd /sys/fs/cgroup/memory/test_memcg cat memory.high
-