내 rsync가 왜 그렇게 느린가요? 여기서 제한 요소는 무엇입니까? 편집

내 랩탑과 워크 스테이션이 모두 기가비트 스위치에 연결되어 있습니다. 둘 다 리눅스를 실행하고 있습니다. 그러나로 파일을 복사 rsync하면 성능이 저하됩니다.

약 22MB / s를 얻습니다. 이론적으로 약 125MB / s를 가져 와서는 안됩니까? 여기서 제한 요소는 무엇입니까?

편집 : 나는 몇 가지 실험을 수행했다.

랩톱에서 성능 쓰기

랩탑에는 전체 디스크 암호화 기능이있는 xfs 파일 시스템이 있습니다. aes-cbc-essiv:sha256256 비트 키 길이의 암호 모드를 사용합니다 . 디스크 쓰기 성능은 58.8MB / s 입니다.

iblue@nerdpol:~$ LANG=C dd if=/dev/zero of=test.img bs=1M count=1024
1073741824 Bytes (1.1 GB) copied, 18.2735 s, 58.8 MB/s

워크 스테이션에서 성능 읽기

복사 한 파일은 5 개가 넘는 HDD의 소프트웨어 RAID-5에 있습니다. 공격대 위에는 lvm이 있습니다. 볼륨 자체는 동일한 암호로 암호화됩니다. 워크 스테이션에는 암호화 속도를 높이는 기본 AES-NI 명령어 세트가있는 FX-8150 CPU가 있습니다. 디스크 읽기 성능은 256MB / s입니다 (캐시가 춥습니다).

iblue@raven:/mnt/bytemachine/imgs$ dd if=backup-1333796266.tar.bz2 of=/dev/null bs=1M
10213172008 bytes (10 GB) copied, 39.8882 s, 256 MB/s

네트워크 성능

두 클라이언트 사이에서 iperf를 실행했습니다. 네트워크 성능은 939 Mbit / s입니다

iblue@raven $ iperf -c 94.135.XXX
------------------------------------------------------------
Client connecting to 94.135.XXX, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 94.135.XXX port 59385 connected with 94.135.YYY port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec



답변

높은 CPU 사용량을 완화하면서도 rsync의 기능을 유지하는 또 다른 방법은 rsync / SSH에서 rsync / NFS로 이동하는 것입니다. NFS를 통해 복사하려는 경로를 내 보낸 다음 NFS 마운트에서 대상 위치로 로컬로 rsync를 사용할 수 있습니다.

WD MyBook Live 네트워크 디스크에서 한 번의 테스트에서 기가비트 네트워크의 NAS에서 2 개의 로컬 USB 디스크로 향하는 하나 이상의 rsync는 10MB / 초 (CPU : 80 % usr, 20 % sys)를 초과하여 복사하지 않습니다. NFS 공유에서 두 디스크로 로컬로 NFS 및 rsyncing 총 45MB / sec (USB2 디스크 모두 최대) 및 CPU 사용량이 거의 없습니다. rsync / SSH를 사용할 때 디스크 사용률은 약 6 %이고 rsync / NFS를 사용하면 24 %에 가까웠지만 두 USB2 디스크는 모두 100 %에 가깝습니다.

따라서 병목 현상을 NAS CPU에서 두 USB2 디스크로 효과적으로 이동했습니다.


답변

압축, 암호화, 복사중인 파일 수 및 크기, 소스 및 대상 시스템의 디스크 I / O 기능, TCP 오버 헤드 등의 이유가 있습니다. 수행중인 전송 유형에 영향을 줄 수있는 모든 요소입니다.

사용중인 rsync 명령을 게시하고 두 컴퓨터의 사양에 대한 세부 정보를 제공하십시오.


편집 : 암호화는 종종 rsync 속도의 제한 요소입니다. ssh와 같은 더 가벼운 암호화 암호로 실행할 수 있습니다.arcfour

다음과 같은 것 : rsync -e "ssh -c arcfour"

또는 암호화를 비활성화 할 수있는 수정 된 rsync / ssh를 사용할 수 있습니다. hpn-ssh 참조 : http://psc.edu/networking/projects/hpn-ssh

그러나 다시 노트북은 워크 스테이션에 비해 드라이브 속도가 느립니다. 쓰기가 차단되어 랩톱으로의 I / O 대기 중일 수 있습니다. 실제 성능 기대치는 무엇입니까?


답변

더 많은 테스트를 마친 후에 마침내 답을 찾았습니다. rsync기본적으로 ssh를 통한 터널링을 사용합니다. 암호는 느려집니다. 그래서 나는 그 암호를 피해야했습니다.

해결 방법 1 : rsync 서버 설정

rsync프로토콜을 통해 사용하려면 rsyncd 서버를 설정해야합니다. /etc/init.d/rsync랩톱에 스크립트 가 있었기 때문에 rsyncd가 실행되고 있다고 생각했습니다. 내가 틀렸어. /etc/init.d/rsync start에서 rsync가 활성화되어 있지 않으면 자동으로 존재합니다 /etc/default/rsync. 그런 다음에 구성해야하기 때문에 /etc/rsyncd.conf어려움이 있습니다.

이 모든 작업을 완료하면을 사용해야 rsync file.foo user@machine::directory합니다. 이 있음을 유의하시기 바랍니다 두 개의 콜론은 .

해결 방법 2 : 구식 RSH 서버

그러나 구성이 너무 복잡했습니다. 그래서 방금 rsh-server랩톱에 설치했습니다 . 워크 스테이션에서 rsync를 호출하면 -e rexecssh 대신 rsh가 사용됩니다. 그런 다음 성능이 거의 44.6 MB / s 로 두 배가 되었지만 여전히 느립니다. 사이의 속도 반송 58메가바이트 / s33메가바이트 / S를 어떤 버퍼 또는 혼잡 제어 문제가있을 수있다 나타낸다. 그러나 그것은이 질문의 범위를 벗어납니다.


답변

이것들은 매우 오래된 질문과 답변이지만 한 가지 중요한 사항이 누락되었습니다. 이미 압축 또는 암호화 된 데이터를 복사하는 경우 압축을 해제하십시오.

데이터가 압축되거나 암호화되지 않은 경우 여전히 한 번만 압축하려고합니다! Rsync는 -z로 압축하고 ssh는 -C로 압축합니다 (기본값). 내 데이터가 압축되어 더 나은 테스트를하지 않았습니다.

내가있는 동안 X 전달 및 TTY 할당을 해제하여 다음을 수행 할 수 있습니다.

rsync -avh -e "ssh -x -T -c arcfour -o Compression=no" $src $dst

마지막으로, iptraf사용중인 네트워크 인터페이스를 실제로 사용하고 있는지 확인하십시오 (예 : 사용 ). OSX에서 발신 ssh가 패킷이 라우팅되어야하는 인터페이스의 IP 대신 기본 발신 인터페이스의 IP에 바인딩되어 있다는 사실에 놀랐습니다. WiFi로 연결된 두 랩톱 사이의 직접 GB 교차 연결은 사용되지 않았습니다. 조사 후, Mac이 모든 인터페이스를 사용하는 169.254 / 16을 사용하고 대상 컴퓨터가 요청이 다른 인터페이스에 있더라도 ARP 요청에 응답합니다.


답변