Copiar arquivos grandes causa troca excessiva

4

Em um servidor CentOS 6.4 / 64 de classe média com 32 GB de RAM, 3 TB de espaço livre em disco, operando como hipervisor KVM, começo a copiar um arquivo de 200 GB para um destino no mesmo sistema de arquivos local. Na verdade, esse arquivo é uma imagem de disco virtual KVM (correspondente a uma VM desligada). Outras 12 VMs estão em alta & trabalhando normalmente nesta mesma máquina.

Eu começo com muito espaço para ir:

[root@myserver]$ free
             total       used       free     shared    buffers     cached
Mem:      32847956   16722708   16125248          0      63756     407740
-/+ buffers/cache:   16251212   16596744
Swap:     16383992          0   16383992

Mas à medida que a cópia progride, o uso da memória começa a aumentar de forma constante até que ela atinja a troca. Claro, isso diminui tudo agora ... a cópia finalmente termina depois de 30 minutos. No final, minha memória parece:

[root@myserver]$ free
             total       used       free     shared    buffers     cached
Mem:      32847956   32643564     204392          0      24392   23213400
-/+ buffers/cache:    9405772   23442184
Swap:     16383992   12057880    4326112

Olhando quais processos estão usando o swap, observo várias instâncias do qemu-kvm. Então agora o desempenho do servidor está sofrendo, já que muitas, se não todas as VMs estão agora trocando. Eu não encontro uma maneira de voltar ao zero (sua condição normal) sem ter que trazer este servidor de produção para uma reinicialização.

O que pode causar isso? Como um processo cp simples pode consumir tanta memória e como isso pode ser evitado? Algum comentário?

Obrigado

    
por David Ramirez 24.09.2013 / 21:19

2 respostas

5

Começar a trocar de volta para 0 não é uma meta útil.

Não há nada ipso facto errado em ter coisas em swap. É bem possível que um programa carregue recursos que ele não usa de fato, e que o kernel perceba isso e os troque, liberando a memória para uso por programas que podem realmente fazer uso dela agora mesmo. Essa situação surge muito no mundo moderno dos bloatwares de hoje, onde os programas dependem tanto de grandes bibliotecas que os outros fornecem, embora precisem apenas de uma pequena fração da capacidade total da biblioteca.

Os únicos números que você forneceu - 200 GB em 30 minutos - também parecem muito bons para mim. São 114 MByte / s, o que é uma taxa de cópia impressionante, considerando que você está copiando um arquivo em um único volume físico. Não faz muito tempo que 100 MByte / s em leituras puramente seqüenciais eram impressionantes. Você está gerenciando melhor do que isso com leituras e gravações intercaladas!

Resumindo, acho que você está latindo na árvore errada.

    
por 24.09.2013 / 22:03
0

Reduza o valor em / proc / sys / vm / swappiness para sacrificar o cache do sistema de arquivos em favor de não trocar programas.

    
por 24.09.2013 / 23:58

Tags