nc
, scp
, 를 사용하여 wget
전용 2Mbps 링크를 통해 두 컴퓨터 간에 파일을 전송할 때 속도는 0.5~1Mbps 사이가 됩니다. 그러나 예를 들어 사용하면 iperf -c 10.0.1.4 -t 20 -P 12
링크 속도를 최대화할 수 있습니다(안정적인 2Mbps 확보).
scp
링크의 전부/대부분을 활용하기 위해 단일 스트림 전송(예: 에서 수행한 전송)을 수행할 수 있는 방법이 있습니까 ? 일종의 TCP 설정 또는 iptables...?
답변1
먼저 사과와 오렌지를 비교하고 있다는 점을 인정해 보겠습니다.
nc
, 일반적 scp
으로 wget
단일 TCP 소켓으로 전송합니다. 그러나 을 사용할 때는 을 iperf -P 12
사용하고 있습니다.열둘병렬 TCP 소켓. 이것은 사소한 구별이 아닙니다. 병렬 연결이 많을수록 대역폭 소비도 커집니다. 사실은,speedtest.net
링크에 단일 TCP 소켓이 걸릴 정도로 심각한 패킷 손실이 있는 경우에도 여러 병렬 TCP 스트림을 사용하여 대역폭 용량을 안정적으로 측정합니다. 나는 그들이 1.5%의 손실로 링크를 포화시키는 것을 보았습니다(이것은 일반 TCP 소켓의 처리량을 감소시킵니다).
최적이 아닌 단일 소켓 TCP 전송의 주요 이유는 패킷 손실과 지연/지터입니다. 링크를 통해 지속적인 패킷 손실이 있는지 확인하고 수정해야 합니다... 저는 주로 다음을 사용합니다.mtr
또는winmtr
이를 위해...
mpenning@mpenning-T61:~$ mtr -n <destination_ip>
HOST: mpenning-T61 Loss% Snt Last Avg Best Wrst StDev
1. 10.239.84.1 0.0% 407 8.8 9.1 7.7 11.0 1.0
2. 66.68.3.223 0.0% 407 11.5 9.2 7.1 11.5 1.3
3. 66.68.0.8 0.0% 407 19.9 16.7 11.2 21.4 3.5
4. 72.179.205.58 0.0% 407 18.5 23.7 18.5 28.9 4.0
5. 66.109.6.108 5.2% 407 16.6 17.3 15.5 20.7 1.5 <----
6. 66.109.6.181 4.8% 407 18.2 19.1 16.8 23.6 2.3
7. 4.59.32.21 6.3% 407 20.5 26.1 19.5 68.2 14.9
8. 4.69.145.195 6.4% 406 21.4 27.6 19.8 79.1 18.1
9. <destination_ip> 6.8% 406 22.3 23.3 19.4 32.1 3.7
시간이 지남에 따라 지속적으로 패킷이 손실되는 홉이 있는 경우그리고그 뒤에 있는 홉이 패킷을 잃어버리면 패킷 손실을 일으키는 원인이 무엇이든 수정해야 합니다. 저는 보통 최소 5~10분 동안 측정합니다. 문제가 즉시 확인되지 않으면 몇 시간 동안 측정하는 경우도 많습니다.
다른 상황은 지연입니다. 누군가 이에 응답하기 전에 종단 간 지연과 src/dest OS 정보에 대한 세부 사항을 사용하여 문제를 더욱 정량화해야 합니다.
따라서 다음 중 하나를 선택할 수 있습니다.
- 성능 저하의 원인이 무엇인지 파악
- 전송을 여러 파일로 나누고 병렬로 전송합니다(현재 처리량을 저하시키는 요인을 극복하기 위해).