De alguma forma, aconteceu de trocar 14 GB de memória. Depois de matar o culpado, tenho toneladas de memória livre novamente, então pensei em trazer os dados importantes novamente. Portanto, com 5 GB dos 32 GB usados e 14 GB de espaço de troca usado, executei swapoff -a.... e 4 horas depois, cerca de metade do trabalho foi concluído.
Isso significa menos que 1 MB / s, enquanto eu posso copiar facilmente 200 MB / s. Minha troca é criptografada, mas todas as partições normais também são e, com o aes-ni , não há carga perceptível na CPU (e o preenchimento do espaço de troca levou apenas alguns minutos). Vejo que não há nenhuma razão especial para otimizar swapoff, no entanto, me pergunto como isso poderia ficar tão lento?
Apenas adicionando mais alguns dados: Minha memória principal é de 32 GB e tenho espaço de troca de 32 GB em cada um dos 4 discos rígidos (certamente um exagero, mas quem se importa?). Todo o espaço de troca pode ser (descriptografado e) lido em menos de 5 minutos:
time -p sudo sh -c 'for i in /dev/mapper/cryptswap?; do md5sum $i & done; wait'
014a2b7ef300e11094134785e1d882af /dev/mapper/cryptswap1
a6d8ef09203c1d8d459109ff93b6627c /dev/mapper/cryptswap4
05aff81f8d276ddf07cf26619726a405 /dev/mapper/cryptswap3
e7f606449327b9a016e88d46049c0c9a /dev/mapper/cryptswap2
real 264.27
Ler uma parte de uma partição não pode ser mais lento do que ler tudo. No entanto, ler cerca de 1/10 disso leva cerca de 100 vezes mais.
Observei que, durante as swapoffduas CPUs, a maioria estava ociosa (talvez 10% de um núcleo) e os discos ("medidos" pelos LEDs). Também vi que os espaços de troca foram desativados um após o outro.
iostat -d 5apresentam baixa IO nos discos durante swapoff, também?