Por que o swapoff é tão lento? [duplicado]

6

Acredito que algo estranho está acontecendo com meu swap / hardware / drivers.

Estou tentando aumentar o tamanho do swap em swapoff , lvresize e, em seguida, swapon novamente.

Quando eu fiz swapoff /dev/swapdev , o comando demorou 8 minutos e 19 segundos para mover cerca de 3,5 GB de páginas trocadas para a memória.

Assegurei que minha RAM livre fosse maior que o uso de troca antes de executar swapoff , e isso permaneceu verdadeiro enquanto estava em execução.

Eu tenho um laptop Intel Core i5 com SSD HDD. O processador estava em menos de 10% antes de swapoff , e quando eu chequei, swapoff estava usando 70% + CPU.

Não houve nada interessante na revista o tempo todo.

Aqui está aproximadamente quanto tempo eu esperaria para desviar 3.5G do disco para a memória:

$ time dd if=/dev/urandom of=/tmp/del bs=1M count=3500
3500+0 records in
3500+0 records out
3670016000 bytes (3.7 GB, 3.4 GiB) copied, 23.7288 s, 155 MB/s

real    0m24.789s
user    0m0.000s
sys     0m22.743s

Estou executando Linux svelte 4.9.53-1-MANJARO #1 SMP PREEMPT Thu Oct 5 15:11:15 UTC 2017 x86_64 GNU/Linux

Alguma razão pela qual o comando demoraria tanto? Isso pode ser parte de uma questão maior, mas esta é a primeira coisa que posso apontar definitivamente para o que parece estranho.

    
por Tom Hale 09.11.2017 / 05:34

1 resposta

8

Você está sentindo falta do que o swapoff realmente faz.

Retirar o espaço de troca em uma máquina em execução, que é a troca, é extremamente complexo. 3.5G em 8min é provável muito rápido + está funcionando como esperado.

A execução do swapoff não apenas simplesmente move o código do disco para a memória.

Uma vez que você está trocando ... bem ... você está trocando, o que significa que seu sistema operacional está carente de memória + você tem disco i / o para o seu dispositivo de swap + disco i / o para seus outros sistemas de arquivos + talvez até mesmo o OOM (out of memory killer) começando a executar o + e a processar o thrash dos processos do OOM sendo reiniciados, se watchdogs ou reinicializações automáticas do systemd estiverem envolvidas.

Se o seu sistema está trocando, isso significa que a troca é a única coisa que mantém seu sistema vivo.

Se você matar o espaço de troca, seu sistema não pode mais usar o espaço de troca, agora seu sistema operacional precisa carregar o código de sistemas de arquivos normais + remover código quando a memória estiver esgotada + então , lê o disco bruto, todo o seu código tem que sair de sistemas de arquivos normais, com passeios de diretório. Isso consome muito mais recursos do que extrair do espaço de troca.

Quando você faz um swapoff em um sistema que está trocando ... normalmente você vai acabar em uma situação onde esse processo levará horas + algumas vezes as máquinas irão falhar.

Se você tiver que aposentar um dispositivo de troca por algum motivo, é melhor primeiro criar um espaço de troca secundário baseado em sistema de arquivos + fazer uma troca para este novo espaço de troca e fazer sua troca no antigo dispositivo de troca.

Se você adotar essa abordagem, seu sistema sempre sobreviverá.

    
por 09.11.2017 / 13:51

Tags