내 rsync가 왜 그렇게 느린가요?


42

내 랩탑과 워크 스테이션이 모두 기가비트 스위치에 연결되어 있습니다. 둘 다 리눅스를 실행하고 있습니다. 그러나로 파일을 복사 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

3
rsync : // 프로토콜 또는 SSH를 통한 터널링? 후자 ¹ 에는 성능에 한계가 있습니다.
ephemient

답변:


18

높은 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 디스크로 효과적으로 이동했습니다.


4
그러나 NFS는 보안 (예 : 암호화)을 제공하지 않습니다.
WhyNotHugo

이것은 훌륭하게 작동했습니다! 지금까지 ~ 100 Mb / s를 얻을 때 거의 기가비트 속도를 얻었습니다.
PHLAK

1
rsync / NFS 사용법을 알려 주시겠습니까? 나는 2 개 MyCloud 드라이브 사이 8TB를 전달하기 위해 노력하고있어 및 영원히와 rsync를 통해 SSH (4메가바이트 / 초) 소요
FMaz008

26

압축, 암호화, 복사중인 파일 수 및 크기, 소스 및 대상 시스템의 디스크 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 대기 중일 수 있습니다. 실제 성능 기대치는 무엇입니까?


1
랩탑은 전력 소비가 적기 때문에 디스크 속도가 느립니다 (7200 rpm-5400 rpm). 이것은 rsync가 수행하는 작업에 따라 제한 요인이 될 수 있습니다.
Ladadadada

1
감사. 들면 rsyncning에서 DM-토굴 에 processer 원자에 부착 된 디스크 암호화 된 eCryptfs ARM NAS 박스이 4MiB 내에서 전송 속도를 변경 / 6MiB로 S / S. rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/pics아무것도없는 것보다는 낫다.
Sebastian

이 답변입니다. rsync -azP에서 rsync -aPe "ssh -c arcfour"로 이동하면 두 MyCloud Mirror 드라이브 간 전송 속도가 4MB / 초에서 25MB / 초로 향상되었습니다. 수신 유닛 CPU가 이제 최대가되었습니다. (장치가 데이터를 쓸 수있는 내가 빨리 transfering있어이 평균을 생각)
FMaz008

10

더 많은 테스트를 마친 후에 마침내 답을 찾았습니다. 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를 어떤 버퍼 또는 혼잡 제어 문제가있을 수있다 나타낸다. 그러나 그것은이 질문의 범위를 벗어납니다.


2
여기서는 rsync를 광범위하게 사용하며 수백만 개의 4K 파일을 통과하지 않는 한 일반적으로 전체 인터페이스 속도를 얻습니다. 심각하게 쇠약해진 하드웨어를 사용하지 않는 한 암호가 문제라고 생각하지 않습니다.
Magellan

ThinkPad R61의 Intel Core2 Duo T8100이 하드웨어를 심각하게 훼손하는 것으로 간주합니까? 그렇지 않다면 왜 ssh를 통한 rsync가 rsh를 통한 rsync보다 느린 것입니까?
iblue

5
암호화는 종종 파일 수와 함께 rsync 속도의 제한 요소입니다. 이를 개선하기위한 표준 접근법은 더 가벼운 암호화 암호로 rsync를 실행 rsync -e "ssh -c arcfour"하거나 암호화를 비활성화 할 수있는 수정 된 rsync / ssh를 시도하는 것입니다. 참조 hpn-ssh: psc.edu/networking/projects/hpn-ssh
ewwhite

2

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

데이터가 압축되거나 암호화되지 않은 경우 여전히 한 번만 압축하려고합니다! 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 요청에 응답합니다.


유효한 옵션이지만 -x -T 및 -o Compression = no는 전송 속도에 거의 영향을 미치지 않습니다.
FMaz008

3
OpenSSH 6.7이 arcfour를 비활성화한다는 점도 언급 할 가치가 있습니다.
bparker

그것은 불쌍한 @ bparker입니다! 남은 사용 가능한 암호 중 CPU에서 가장 가벼운 암호를 알고 있습니까?
법률 29
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.