Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 7160|Resposta: 5

Docker modifica e restringe CPU de container, memória e outros recursos

[Copiar link]
Publicado em 06/08/2022 13:55:37 | | | |
Requisitos: Ao criar um container docker, você pode limitar o uso máximo de memória do container adicionando o parâmetro -m.

Revise os limites de memória dos contêineres

A máquina hospedeira instala um pen drive 8G e cria 3 containers, dos quais a memória máxima do container itsvse-redis é limitada a 512M, e os dois containers restantes não são restritos, como mostrado na figura abaixo:



Explicação detalhada do formato da informação de saída

[CONTÊINER]: Exibe o ID do contêiner em formato curto.
% de CPU: uso de CPU.
[USO/LIMITE DE MEM]: A memória atualmente usada e a memória máxima que pode ser utilizada.
[MEM %]: Exibe o uso de memória como porcentagem.
[I/O NET]: Dados de E/S de rede.
[I/O DE BLOCO]: Dados de E/S do disco.
[PIDS]:P número de identificação.

Comando Docker update

O comando docker update atualiza dinamicamente a configuração do container. Você pode usar esse comando para evitar que os containers consumam muitos recursos dos hosts Docker. Com um único comando, você pode definir limites para um único contêiner ou múltiplos. Para especificar múltiplos contêineres, forneça uma lista de nomes ou IDs de contêineres separados por espaços.

OPÇÕES Descrição

nome
descrição
--blkio-weight
Bloqueando IO (peso relativo), entre 10 e 1000, 0 está desativado (padrão suprimido)
--CPU-ponto
Limite a duração do CFS (Totally Fair Scheduler) da CPU
--cota de CPU
Limitar as cotas de CFS (Scheduler Completamente Justo) da CPU
--cpu-rt-período
API 1.25+, que limita o tempo real da CPU a microssegundos
--CPU-RT-tempo de execução
API 1.25+, que limita o tempo de execução em tempo real da CPU a microssegundos
--CPU-shares, -c
Participação da CPU (peso relativo)
--Cpus
API 1.29+, número de CPUs
--cpuset-cpus
CPU permitida (0-3,0,1)
--cpuset-mem
Permitido MEM (0-3,0,1)
--memória-kernel
Limites de memória do kernel
--troca de memória
O limite de swap é igual à memória mais swapping, "-1" para permitir troca ilimitada
--memory-reservatio
Limite suave de memória
--memória, -m
Limite de memória
--pids-limite
API 1.40+, ajuste dos limites de PIDs dos contêineres (-1 significa ilimitado)
--reiniciar
Reinicie a política para aplicar quando o contêiner sair

Documentação:O login do hiperlink está visível.

Suponha que você limite o contêiner php5-fpmUso máximo de memória: 1024M (1G), o comando é o seguinte:



(Fim)




Anterior:Comunicação entre janelas em HTML5 PostMessage
Próximo:[Turn] Uma frase Tarefa. O resultado será bloqueado, como mais escrever esse código?
 Senhorio| Publicado em 06/08/2022 13:58:43 |
Se você não definir o parâmetro --memory-swap, pode receber um erro:

Resposta de erro do daemon: Não é possível atualizar o container ae7884f515f96cadab65668d6a44e13bb899c1e7fd411abcc88577a79d4302a3: O limite de memória deve ser menor que o limite de memoryswap já definido, Atualize o Memoryswap ao mesmo tempo
 Senhorio| Publicado em 06/08/2022 14:31:57 |
O Linux usa o lookbusy para simular o uso da CPU
https://www.itsvse.com/thread-10260-1-1.html
Publicado em 06/08/2022 15:52:44 |
Aprenda a aprender
 Senhorio| Publicado em 01/07/2023 21:46:50 |
Opções de runtime para memória, CPU e GPU Docker:O login do hiperlink está visível.

--detalhes da troca de memória

--memory-swap é uma flag modificadora que só faz sentido se --memory também estiver ativado. Quando um container usa toda a RAM disponível, o swap permite que o container escreva requisitos de memória excedentes no disco. Para aplicações que frequentemente trocam memória para disco, o desempenho sofre.

Seus cenários podem ter efeitos complexos:

Se --memory-swap for definido para um inteiro positivo, então ambas as --memórias devem ser definidas para --memory-swap. --swap de memória representa a quantidade total de memória e zonas de swap que podem ser usadas, e --memória controla a quantidade de memória usada em zonas que não são swap. portantoSe --memory="300m" e --memory-swap="1g", o contêiner pode trocar espaço com 300m de memória e 700m (1g - 300m).

Se --memory-swap for definido como 0, a configuração é ignorada e o valor é considerado não definido.

Se --memory-swap for definido para o mesmo valor que --memory, e --memory for definido para um inteiro positivo, o contêiner não tem acesso para swap。 Veja Impedir que contêineres usem swaps.

Se --memory-swap não estiver definido e --memory estiver definido, o contêiner pode usar tanto swap --memory quanto set (se o container host estiver configurado com swap memory). Por exemplo, se --memory="300m" e --memory-swap não estiverem ativados, o contêiner pode usar um total de 600m de memória e espaço de troca.

Se --memory-swap estiver explicitamente definido como -1, o contêiner pode usar um número ilimitado de swaps, até o número disponível no sistema hospedeiro.

Dentro do contêiner, ferramentas como o gratuito reportam as trocas disponíveis para o anfitrião, em vez de reportar as trocas disponíveis dentro do contêiner. Não confie na saída de ferramentas gratuitas ou similares para determinar se existe uma troca.
 Senhorio| Publicado em 16/02/2024 04:07:22 |

Se --memory-swap não estiver definido,-- a memória é definida para um valor,O padrão --memory-swap pode usar a mesma memória que --memoryPor exemplo, se você ,-- swap de memória=1G, pode usar 1G de espaço de swap e, finalmente, o container pode usar 2G de memória (--espaço de 1G + --espaço de swap de memória 1G).

Isso significa que, quando --memória é definida,-- troca de memória pode ser entendida como o limite total de memória, e o espaço disponível para swap é igual ao valor de troca de memória menos memória.

Veja a configuração do container --memory-swap com o seguinte comando:



"Memória": 536870912, // 512M=536870912/1024/1024/1024
"MemoryReservation": 0,
"MemorySwap": 1073741824, // 1G=1073741824/1024/1024/1024
"Troca de Memórias": nula,

A configuração acima é que o contêiner limita a memória --memory=512M, e --memory-swap não está definido.
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com