rsync - 델타 전송 프로토콜 CPU 사용량 및 복사 속도가 포함된 전체 파일

rsync - 델타 전송 프로토콜 CPU 사용량 및 복사 속도가 포함된 전체 파일

LAN을 통해 파일을 복사하는 속도를 테스트하고 있습니다. 1GB의 /dev/urandom 데이터를 생성하고 1Gbps 네트워크를 통해 다른 시스템에 복사했습니다.

rsync 전송 속도(-a 옵션만 해당)는 약 17MB/s입니다. -W가 추가된 rsync 전송 속도는 110MB/s로 안정적입니다.

내 특별한 경우는 복사하기 전에 매번 파일을 생성하므로 전체 파일을 복사하고 싶다는 것입니다. -a 옵션이 없으면 총 4개 코어 중 하나의 사용량이 100%로 표시됩니다. 제 생각에는 rsync가 전송할 델타를 계산하기 때문에 병목 현상이 발생하는 것 같습니다.

질문: 증분 계산을 "멀티 코어"로 만드는 것이 가능합니까? 이제 CPU의 25%만 사용됩니다.

답변1

하나의 파일에 대해 대역폭 최적화를 얻지 못하거나 계산을 위해 여러 코어를 사용하지 않지만 더 많은 파일, 특히 수천 개의 파일이 있고 그 중 일부는 업데이트해야 하는 경우 아래와 같이 xargs를 사용할 수 있습니다.

ls /your/local/folder/ | xargs -n1 -P4 -I% rsync -Pa % ursrv.com:/remote/folder/

이 명령줄은 모든 폴더/파일을 나열한 다음 입력 매개변수를 폴더 또는 파일로 사용하여 rsync 인스턴스 4개를 실행합니다. 이는 직접적인 멀티 코어는 아니지만 rsync의 여러 인스턴스를 실행하므로 확실히 CPU를 더 효율적으로 로드할 수 있습니다.

답변2

처음에 사용자는단일 파일그리고무작위 데이터원본 서버에서:

Delta Transfer는 알고리즘을 사용하여 한 컴퓨터의 파일을 업데이트하여 다른 원격 컴퓨터의 파일과 동일하게 만듭니다.이 알고리즘은 대상 파일의 특정 부분과 동일한 소스 파일의 부분을 식별하고 이러한 방식으로 일치할 수 없는 부분만 보냅니다.. 실제로 알고리즘은 동일한 시스템에 두 파일을 모두 두지 않고도 차이점 집합을 계산합니다. 일반적으로 Delta Transfer는 두 시스템이 낮은 대역폭, 높은 대기 시간 통신 링크로 연결된 경우 매우 잘 작동합니다. 이 경우 두 시스템 간의 연결이 전체 시스템의 주요 병목 현상이 됩니다. 링크를 통해 전송되는 바이트 양을 크게 줄임으로써 운영 효율성이 크게 향상됩니다. --출처는 어디에나 있습니다

사용자는 원격 서버에 해당 파일 없이 전송하기 때문에 파일이 동기화되지 않은 상태로 복사되어 초기 전송이 --whole-file더 효율적입니다.


-zCPU 주기를 네트워크 오버헤드로 바꾸려면 압축 옵션을 사용하는 것이 좋습니다 . 압축 유형과 수준도 조정할 수 있습니다.

--compress-choice= --compress-level=
이것이 표준이다 0-9
lz4 0-9
zlibx 0-9
주쿠 0-9

지원되는 파일 시스템에서 공용 데이터는 사용자의 임의 데이터와 달리 스위치를 설정한 --sparse다음 후속 rsync에서 --inplace스위치를 write-in-place로 설정하여 스파스 파일로 저장할 수 있습니다.


스위치를 추가하면 --update싱크의 최신 파일을 건너뛰어 낭비되는 쓰기가 절약됩니다.


--append스위치를 사용하면 사용자가 더 짧은 파일에 데이터를 추가할 수 있습니다.


다음 설정이 도움이 될 수 있습니다.전반적인 장황함을 높입니다.테스트 중:

--verbose, -v            increase verbosity
--stats                  give some file-transfer stats
--human-readable, -h     output numbers in a human-readable format
--progress               show progress during transfer

관련 정보