A troca está pela metade, mas nada está entrando ou saindo do swap

0

Eu fiz um trabalho que excedeu a memória e comecei a escrever na troca. A troca é de 25 GB e a RAM é de 1 TB.

Eu parei o trabalho quando o swap estava cheio até 11GB, então 50% dele ainda estava vazio.

Ele não acionou nenhum trabalho de kill da OOM, então tudo está normal como antes.

Eu tenho apenas 8GB swap usado agora (3GB é limpo depois que eu parei o trabalho), e está diminuindo lentamente. Mas quando eu verifico vmstat , o si e so são ambos 0 , então não há nada entrando ou saindo do swap? Como isso pode ser possível?

free -lm
              total        used        free      shared  buff/cache   available
Mem:        1031757      475637       49100          63      507019      553720
Low:        1031757      982657       49100
High:             0           0           0
Swap:         25767        8272       17495

Eu tenho um espaço livre de 40GB em RAM , então devo esperar que meus trabalhos em execução sejam mortos por OOM não agora, mas depois? 8GB usado em swap é menor que 40GB de espaço livre em RAM , então parece bom, mas não tenho certeza se ainda diz que OOM não será acionado ..

Alguns meses atrás, quando o OOM foi acionado, ele matou todos os meus trabalhos e o swap usado foi 25GB (totalmente cheio) e, em seguida, 10 minutos depois, 0GB . No entanto, neste caso, leva um dia para limpar 2-3 GB de swap. É uma má notícia para meus trabalhos em execução?

Você acha que meus trabalhos em execução estão em risco de serem mortos, não agora, mas mais tarde, quando o espaço de troca livre atingir 0 GB , pois acionaria OOM para matar? Se for esse o caso, como posso evitar que isso aconteça?

Eu gostaria de receber ajuda.

    
por bapors 30.01.2018 / 12:51

1 resposta

1

vmstat sem parâmetros mostra os valores médios desde a reinicialização. Como a troca / troca é mostrada como blocos / segundo, não é estranho que eles estejam mostrando 0, se você tiver um tempo de atividade razoável.

O que está agora em swap é a memória que está em uso, mas não usada desde a hora em que foi trocada devido à sobrecarga da memória pelo seu processo. Isto é realmente uma coisa boa, pois muitos processos têm memória que é, e. usado somente durante a inicialização. Tendo isso trocado significa que você tem mais RAM livre disponível para processos e buffers / cache.

A razão pela qual no caso anterior, quando você fez obter o OOM, depois todo espaço de troca foi livre novamente logo após o evento ser provavelmente porque o processo causador da OOM usou todo o espaço e depois dele foi parado todo o espaço de troca estava livre novamente.

O único momento em que você obterá OOM é quando não há espaço de troca livre, e não há RAM livre (levando em conta os buffers / cache, isto é, a coluna "disponível" do comando free ). / p>

Para o resto, você geralmente pode confiar no gerenciamento de memória do Linux para fazer a coisa certa. Somente se você tiver requisitos realmente especiais devido ao tipo de carga / aplicativo que estiver executando, será necessário começar a ajustar o gerenciamento de memória.

    
por 30.01.2018 / 15:27