scp
está medindo a taxa que os dados estão passando por it .
Basicamente, scp
lê alguns dados do disco e os passa por um canal para ssh
. Existe um buffer de pipe no kernel, embora seja bem pequeno. Então ssh
criptografa e passa para o kernel para enviar pela rede. Esse buffer pode ser bastante grande.
Todo o armazenamento em buffer é bastante transparente para o aplicativo; Faz apenas como write
chamada contra o tubo ou soquete. O kernel aceita os dados e não aponta para o aplicativo se ele está em um buffer ou foi realmente enviado e reconhecido pelo lado remoto. Existem maneiras de o aplicativo fazer perguntas, mas isso seria difícil para scp
, já que ssh
está manipulando o soquete.
O que você está vendo é que o preenchimento inicial de todos os buffers (principalmente o buffer de envio TCP) acontece rapidamente - e o scp está exibindo isso como sua taxa de transferência. No final, scp
termina de ler o arquivo, envia para ssh
sobre o pipe e espera que o ssh termine. ssh
vê que scp
terminou de enviar e espera que o kernel termine de liberar o buffer TCP. Essa é a pausa no final.
Acho que as únicas duas soluções (além de 'ignorar') são obter um link mais rápido ou diminuir o tamanho do buffer de envio TCP.