Tại sao rsync của tôi rất chậm?


42

Máy tính xách tay và máy trạm của tôi đều được kết nối với Gigabit Switch. Cả hai đều chạy Linux. Nhưng khi tôi sao chép các tập tin với rsync, nó thực hiện rất tệ.

Tôi nhận được khoảng 22 MB / s. Về lý thuyết tôi có nên nhận khoảng 125 MB / s không? Yếu tố hạn chế ở đây là gì?

EDIT: Tôi đã tiến hành một số thí nghiệm.

Viết hiệu suất trên máy tính xách tay

Máy tính xách tay có một hệ thống tập tin xfs với mã hóa toàn bộ đĩa. Nó sử dụng aes-cbc-essiv:sha256chế độ mật mã với độ dài khóa 256 bit. Hiệu suất ghi đĩa là 58,8 MB / 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

Đọc hiệu suất trên máy trạm

Các tệp tôi đã sao chép nằm trên phần mềm RAID-5 trên 5 ổ cứng. Trên đầu cuộc đột kích là một lvm. Khối lượng chính nó được mã hóa với cùng một mật mã. Máy trạm có cpu FX-8150 có bộ lệnh AES-NI riêng giúp tăng tốc mã hóa. Hiệu suất đọc đĩa là 256 MB / s (bộ nhớ cache đã lạnh).

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

Hiệu suất mạng

Tôi chạy iperf giữa hai khách hàng. Hiệu suất mạng là 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: // giao thức hoặc đường hầm qua SSH? Có những hạn chế hiệu suất rất rõ ràng trong trường hợp sau ¹ .
ephemient

Câu trả lời:


18

Một cách khác để giảm thiểu việc sử dụng CPU cao nhưng vẫn giữ chức năng của rsync, là chuyển từ rsync / SSH sang rsync / NFS. Bạn có thể xuất các đường dẫn bạn muốn sao chép từ qua NFS và sau đó sử dụng rsync cục bộ từ ngàm NFS đến vị trí đích của bạn.

Trong một thử nghiệm từ đĩa mạng WD MyBook Live, một hoặc nhiều rsyncs từ NAS trên mạng Gigabit hướng tới 2 đĩa USB cục bộ sẽ không sao chép hơn 10MB / giây (CPU: 80% usr, 20% sys), sau khi xuất qua NFS và rsyncing cục bộ từ chia sẻ NFS sang cả hai đĩa tôi có tổng cộng 45MB / giây (tối đa cả hai đĩa USB2) và sử dụng ít CPU. Mức độ sử dụng ổ đĩa khi sử dụng rsync / SSH là khoảng 6% và sử dụng rsync / NFS gần hơn với 24%, trong khi cả hai đĩa USB2 gần 100%.

Vì vậy, chúng tôi đã chuyển một cách hiệu quả nút cổ chai từ CPU NAS sang cả hai đĩa USB2.


4
Tuy nhiên, được cảnh báo rằng NFS không cung cấp bảo mật (ví dụ: mã hóa).
WhyNotHugo

Điều này đã làm việc tuyệt vời! Bây giờ nhận được tốc độ gigabit gần như đầy đủ khi tôi chỉ nhận được ~ 100 Mb / giây trước đó.
PHLAK

1
Bạn có thể chỉ ra cách sử dụng rsync / NFS không? Tôi đang cố gắng chuyển 8Tb giữa 2 ổ MyCloud và phải mất mãi mãi với rsync qua ssh (4MB / giây)
FMaz008

26

Các lý do có thể bao gồm: nén, mã hóa, số lượng và kích thước tệp được sao chép, khả năng I / O đĩa hệ thống nguồn và hệ thống đích của bạn, TCP trên đầu ... Đây là tất cả các yếu tố có thể ảnh hưởng đến loại chuyển bạn đang thực hiện.

Vui lòng đăng lệnh rsync bạn đang sử dụng và cung cấp chi tiết về thông số kỹ thuật của cả hai máy tính.


Chỉnh sửa: Mã hóa thường là một yếu tố hạn chế trong tốc độ rsync. Bạn có thể chạy với ssh và mật mã mã hóa nhẹ hơn nhưarcfour

Cái gì đó như: rsync -e "ssh -c arcfour"

Hoặc bạn có thể sử dụng rsync / ssh đã sửa đổi có thể vô hiệu hóa mã hóa. Xem hpn-ssh: http://psc.edu/networking/projects/hpn-ssh

Nhưng một lần nữa, máy tính xách tay của bạn có một ổ đĩa chậm so với máy trạm của bạn. Các bài viết có thể bị chặn và chờ I / O đến máy tính xách tay của bạn. Kỳ vọng hiệu suất thực sự của bạn là gì?


1
Máy tính xách tay thường có đĩa chậm hơn (7200 vòng / phút - 5400 vòng / phút) vì chúng sử dụng ít năng lượng hơn. Đây có thể dễ dàng là yếu tố giới hạn của bạn tùy thuộc vào chính xác những gì rsync đang làm.
Ladadadada

1
cảm ơn. Đối với rsyncningtừ một đĩa được mã hóa dm-crypt được gắn vào bộ xử lý nguyên tử vào hộp ARM ARM mã hóa , điều này đã thay đổi tốc độ chuyển của tôi từ 4MiB / s thành 6MiB / s. rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/picsCó còn hơn không.
Sebastian

Câu trả lời này. Chuyển từ rsync -azP sang rsync -aPe "ssh -c arcfour" đã tăng tốc độ truyền từ 4MB / giây lên 25MB / giây giữa hai ổ MyCloud Mirror. CPU đơn vị nhận được tối đa hóa. (nghĩ rằng điều này có nghĩa là tôi chuyển nhanh như đơn vị có thể ghi dữ liệu)
FMaz008

10

Sau một số thử nghiệm, cuối cùng tôi đã tìm thấy câu trả lời. rsyncsử dụng đường hầm trên ssh theo mặc định. Tiền điện tử làm cho nó chậm. Vì vậy, tôi cần phải đi xung quanh công cụ tiền điện tử đó.

Giải pháp 1: Thiết lập máy chủ rsync

Để sử dụng nó thông qua rsyncgiao thức, bạn phải thiết lập một máy chủ rsyncd. Có một /etc/init.d/rsynckịch bản trên máy tính xách tay của tôi, vì vậy tôi đoán, rsyncd đang chạy. Tôi đã sai. /etc/init.d/rsync starttồn tại âm thầm, khi rsync không được kích hoạt /etc/default/rsync. Sau đó, bạn cũng phải cấu hình nó /etc/rsyncd.conf, đó là một nỗi đau.

Nếu bạn hoàn thành tất cả điều này, bạn phải sử dụng rsync file.foo user@machine::directory. Xin lưu ý rằng có hai dấu hai chấm .

Giải pháp 2: Máy chủ rsh trường học cũ

Tuy nhiên, cấu hình quá phức tạp đối với tôi. Vì vậy, tôi chỉ cần cài đặt và rsh-servertrên máy tính xách tay của tôi. Gọi rsync trên máy trạm -e rexecsau đó sử dụng rsh thay vì ssh. Mà sau đó gần như tăng gấp đôi hiệu suất lên 44,6 MB / s , vẫn còn chậm. Tốc độ nảy giữa 58 MB / s33 MB / s , điều này cho thấy có thể có một số vấn đề kiểm soát bộ đệm hoặc tắc nghẽn. Nhưng đó là ngoài phạm vi của câu hỏi này.


2
Chúng tôi sử dụng rsync rộng rãi ở đây và thường nhận được tốc độ giao diện đầy đủ trừ khi đi qua hàng triệu tệp 4K. Tôi không nghĩ rằng tiền điện tử là vấn đề trừ khi bạn đang sử dụng một số phần cứng nghiêm trọng.
Magellan

Liệu Intel Core2 Duo T8100 trong ThinkPad R61 có bị coi là phần cứng nghiêm trọng không? Nếu không, tại sao rsync trên ssh chậm hơn rsync trên rsh thì sao?
iblue

5
Mã hóa thường là một yếu tố hạn chế trong tốc độ rsync, cùng với số lượng tệp. Các cách tiếp cận tiêu chuẩn để cải thiện điều này là chạy rsync với mật mã mã hóa nhẹ hơn như rsync -e "ssh -c arcfour"hoặc thử một rsync / ssh được sửa đổi có thể vô hiệu hóa mã hóa. Xem hpn-ssh: psc.edu/networking/projects/hpn-ssh
ewwhite

2

Đây là một câu hỏi và câu trả lời rất cũ, nhưng thiếu một điều quan trọng: nếu bạn đang sao chép dữ liệu đã được nén hoặc mã hóa, hãy tắt nén.

Nếu dữ liệu của bạn không được nén hay mã hóa, bạn vẫn chỉ muốn nén nó một lần! Rupync nén với -z, ssh nén với -C (có thể theo mặc định). Tôi đã không kiểm tra cái nào tốt hơn vì dữ liệu của tôi đã được nén.

Trong khi tôi đang ở đó, bạn có thể tắt chuyển tiếp X và phân bổ TTY, dẫn đến:

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

Cuối cùng, hãy chắc chắn (ví dụ như sử dụng iptraf) rằng bạn thực sự đang sử dụng giao diện mạng mà bạn nghĩ rằng bạn đang sử dụng. Tôi rất ngạc nhiên khi lưu ý rằng trên OSX của tôi, ssh gửi đi đã liên kết với IP trên giao diện gửi đi mặc định thay vì IP trên giao diện mà các gói tin được định tuyến. Kết nối chéo GB trực tiếp của tôi giữa hai máy tính xách tay cũng được kết nối bằng WiFi không được sử dụng. Sau khi điều tra, đó là do sử dụng 169.254 / 16, mà Mac đặt trên tất cả các giao diện và máy tính đích trả lời các yêu cầu ARP mặc dù yêu cầu đến trên một giao diện khác.


Tùy chọn hợp lệ, nhưng tôi thấy rằng -x -T và -o Nén = không chỉ có ít ảnh hưởng đến tốc độ truyền.
FMaz008

4
Điều đáng nói là OpenSSH 6.7 sẽ vô hiệu hóa arcfour.
bparker

Đó là một điều đáng tiếc @bparker! Chúng ta có biết mật mã khả dụng nào còn lại là nhẹ nhất trên CPU không?
Luật29
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.