Seu gargalo é a velocidade do disco rígido. O multi-core não pode acelerar isso.
O que eu quero fazer é copiar 500K de arquivos.
Eu quero copiar no servidor de um destino para outro. Ele inclui principalmente muitos arquivos pequenos.
São mais de 23 GB apenas, mas demoram tanto (mais de 30 minutos e ainda não terminaram), o comando linux cp também usa apenas 1 CPU.
Então, se eu script para usar vários cps, isso tornaria mais rápido.
O sistema tem 16 núcleos, 16 GB de RAM, 15 K de Drivers (15000 RPM SATA).
Quais são as outras opções?
Acredito que tarring e untaring levaria ainda mais tempo e não usaria multi-core ..
Seu gargalo é a velocidade do disco rígido. O multi-core não pode acelerar isso.
Copiar um único arquivo grande é mais rápido do que mover muitos arquivos pequenos, pois há muita latência com a configuração e desmontagem de cada operação - também o disco e o SO podem fazer muita leitura antecipada com um único arquivo grande. Então tarring primeiro seria mais rápido. Embora uma vez que você considere o tempo gasto com o tar, isso pode não acelerar muito as coisas.
Note que você está lendo somente de um único disco, portanto, paralelizar suas chamadas para o disco pode realmente atrasar as coisas, onde ele tenta servir vários arquivos ao mesmo tempo.
Está tudo no mesmo diretório? Existe um script que inicia vários cp: link
Para uma árvore, você precisa ajustá-la.
Embora a questão tenha sido bastante antiga, acho que a melhor maneira é zipar usando vários núcleos como lbzip2 e pbzip2. Transfira o arquivo compactado e descompacte-o usando vários núcleos. Você pode encontrar sobre os comandos na Internet.
Tags cp linux file-transfer