rsync cópia lenta de um disco para outro

2

Eu tenho dois drives do mesmo modelo que estão conectados usando o SATA.

Quando comparamos as velocidades de leitura usando hdparm -t /dev/sdX , as velocidades de cerca de 160MB/s são retornadas. Quando comparamos a velocidade de gravação usando dd if=/dev/zero of=testfile bs=1M count=500 conv=fdatasync , as velocidades de cerca de 140MB/s são retornadas.

No entanto, ao copiar um único arquivo de 10 GB usando rsync --progress /mnt/hd1/file /mnt/hd2/file , a velocidade de gravação é apenas cerca de 35MB/s .

Por que isso é tão lento? Como posso fazer isso mais rápido?

    
por Zulakis 01.07.2013 / 20:54

2 respostas

7

De acordo com muitos sites que encontrei enquanto pesquisava esse problema (por exemplo, este ), isso é normal como o gargalo de rsync geralmente é o poder da CPU.

Os resultados com dd e cp estavam próximos das velocidades que eu inicialmente havia comparado. Parece que um dual core de 2,2 Ghz não é suficiente para o rsync de velocidade de disco rígido.

Durante pesquisas adicionais, também descobri este :

Correct, rsync has no option to disable the post-transfer checksum completely. I implemented a patch to rsync 2.6.9 that adds an option --trust-append that limits the post-transfer checksum to the added portion, not the entire file. The patch is attached. That should be good enough, but if you really want to disable the checksum completely, just comment out the remaining sum_update calls in match.c and receiver.c .

O rsync sempre verifica o arquivo inteiro que leva muito tempo. Usando o patch mencionado acima, consegui aumentar a velocidade do rsync para cerca de 90MB / s. Ainda não é ótimo, mas muito melhor do que antes. Infelizmente, o patch não entrou no trunk do rsync.

    
por 01.07.2013 / 21:38
3

Eu tive exatamente o mesmo problema (no Linux), ou seja: 35BM / s.

Acontece que o rsync está ligado à CPU E não aciona o cpu ondemand governor, então o CPU está preso na velocidade mais lenta (800MHz no meu caso vs 3000MHz)

Você pode testar usando:

cat / proc / cpuinfo | grep MHz

A correção é ajustar o governador da CPU.

echo "70" > / sys / devices / system / cpu / cpufreq / ondemand / up_threshold

Para torná-lo permanente, coloque-o em /etc/rc.local

Veja a explicação: link

    
por 14.03.2014 / 01:08