O que limita o desempenho do scp?

13

Eu tenho duas máquinas Debian Linux conectadas via LAN de 1 Gbit. Eu posso medir isso com uma transferência de arquivo HTTP bruto com a wgetqual fica em torno de 100 MB / s em qualquer direção.

Quando agora uso scp, o máximo sem compressão que recebo é de cerca de 15 MB / s . A ativação da compactação com o -Csinalizador me dá, dependendo do conteúdo, até 50 MB / s .

Ainda assim, parece que muita largura de banda é desperdiçada aqui. Eu não me incomodei por um longo tempo até que eu realmente tive que pensar em algumas transferências de arquivos de log muito grandes e só percebi o quão estranhamente lenta scpé. É natural que eu use scp, mesmo no ambiente da empresa, porque toda a infraestrutura está configurada para isso.

O que limita tanto o desempenho do scp? A CPU está vinculada por causa da criptografia? Quando eu uso htop, parece que não faz uso de CPUs multicore, apenas uma das quatro CPUs é maximizada.

Existe uma maneira de aumentar a taxa de transferência? Eu tenho servidores HTTP e samba disponíveis, mas para mover arquivos entre máquinas Linux eu normalmente apenas uso SSH, foi assim que cresci. Mas isso agora me faz pensar sobre isso, parece que preciso considerar outras formas de transferência para grandes quantidades de dados.

O HTTP é usado apenas para aplicações específicas em PHP / Java / qualquer que seja, e o samba é usado por alguns motivos especiais que precisamos acessar nas máquinas Windows.

marca
fonte
A resposta do JooMing funcionou para mim fabulosa, mas a -Copção de compactação a tornou mais lenta (21 MB / s em vez de 112 MB / s). Então, por favor, tome cuidado com -C.
math

Respostas:

7

Provavelmente é a criptografia. Você pode tentar scp com cifras diferentes, por exemplo:

scp -c arcfour src dest

Verifique a página de manual do ssh_config para obter as cifras disponíveis. RC4 (arcfour) é uma cifra rápida, mas provavelmente não é tão segura quanto algumas alternativas.

JooMing
fonte
Note-se que o uso do RC4 não é seguro e as comunicações podem ser interrompidas facilmente.
Evan Darwin
6

Parte disso pode ter a ver com a implementação interna do OpenSSH. Dê uma olhada no HPN-SSH para obter uma explicação decente por um motivo para os gargalos e correções no OpenSSH que podem resolvê-lo (se você estiver disposto a corrigir e reconstruir a partir do código-fonte).

James Sneeringer
fonte