ทำไม rsync ของฉันช้ามาก


42

ทั้งแล็ปท็อปและเวิร์กสเตชันของฉันเชื่อมต่อกับกิกะบิตสวิตช์ ทั้งคู่กำลังใช้งาน Linux แต่เมื่อฉันคัดลอกไฟล์ด้วยrsyncจะทำงานได้ไม่ดี

ฉันได้ประมาณ 22 MB / s ในทางทฤษฎีฉันควรจะได้รับประมาณ 125 MB / s หรือไม่? อะไรคือปัจจัย จำกัด ที่นี่

แก้ไข:ฉันทำการทดลองบางอย่าง

ประสิทธิภาพการเขียนบนแล็ปท็อป

แล็ปท็อปมีระบบไฟล์ xfs พร้อมการเข้ารหัสดิสก์เต็มรูปแบบ มันใช้aes-cbc-essiv:sha256โหมดตัวเลขที่มีความยาวคีย์ 256 บิต ประสิทธิภาพการเขียนดิสก์เป็น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

อ่านประสิทธิภาพบนเวิร์กสเตชัน

ไฟล์ที่ฉันคัดลอกอยู่ในซอฟต์แวร์ RAID-5 มากกว่า 5 HDD ด้านบนของการจู่โจมคือ LVM ไดรฟ์ข้อมูลนั้นถูกเข้ารหัสด้วยรหัสลับเดียวกัน เวิร์กสเตชันนั้นมีซีพียู FX-8150 ที่มีชุดคำสั่งดั้งเดิม AES-NI ซึ่งเพิ่มความเร็วในการเข้ารหัส ประสิทธิภาพการอ่านดิสก์คือ256 MB / 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 แล้วใช้ rsync แบบโลคัลจากการเมานต์ NFS ไปยังตำแหน่งปลายทางของคุณ

ในการทดสอบหนึ่งครั้งจากดิสก์เครือข่าย WD MyBook Live หนึ่งหรือมากกว่า rsyncs จาก NAS บนเครือข่าย Gigabit ไปยังดิสก์ USB ในเครื่อง 2 ตัวจะไม่คัดลอกมากกว่า 10MB / วินาที (CPU: 80% usr, 20% sys) หลังจากส่งออกมากกว่า NFS และ rsyncing แบบโลคัลจากการแชร์ NFS ไปยังดิสก์ทั้งสองฉันได้รับทั้งหมด 45MB / วินาที (maxing out ทั้งดิสก์ USB2) และการใช้งาน CPU เพียงเล็กน้อย การใช้ดิสก์เมื่อใช้ rsync / SSH ประมาณ 6% และการใช้ rsync / NFS ใกล้เคียงกับ 24% ในขณะที่ดิสก์ USB2 ทั้งสองใกล้เคียงกับ 100%

ดังนั้นเราจึงย้ายคอขวดอย่างมีประสิทธิภาพจาก NAS CPU ไปยังดิสก์ USB2 ทั้งสอง


4
ได้รับการเตือนว่า NFS นั้นไม่มีการรักษาความปลอดภัย (เช่น: การเข้ารหัส)
WhyNotHugo

มันใช้งานได้ดี! ตอนนี้ได้รับความเร็วกิกะบิตเกือบเต็มเมื่อฉันเพิ่งได้รับ ~ 100 Mb / s ก่อน
PHLAK

1
คุณสามารถชี้ให้เห็นวิธีการใช้ rsync / NFS ได้ไหม? ฉันกำลังพยายามถ่ายโอน 8Tb ระหว่าง 2 ไดรฟ์ MyCloud และใช้เวลานานด้วย rsync บน ssh (4MB / วินาที)
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-crypt ที่ต่อพ่วงกับอะตอมโปรเซสเซอร์ไปยังกล่อง ARM NAS ecryptfsสิ่งนี้เปลี่ยนความเร็วการถ่ายโอนของฉันจาก 4MiB / s เป็น 6MiB / s rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/picsดีกว่าไม่มีอะไร
เซบาสเตียน

คำตอบนี้ การเปลี่ยนจาก rsync -azP เป็น rsync -aPe "ssh -c arcfour" เพิ่มความเร็วการถ่ายโอนจาก 4MB / วินาทีเป็น 25MB / วินาทีระหว่าง MyCloud Mirror สองไดรฟ์ ซีพียูที่รับมานั้น maxed out แล้ว (คิดว่านี่หมายความว่าฉันกำลังโอนให้เร็วที่สุดเท่าที่หน่วยสามารถเขียนข้อมูลได้)
FMaz008

10

หลังจากการทดสอบเพิ่มเติมในที่สุดฉันก็พบคำตอบด้วยตนเอง rsyncใช้ tunneling over ssh โดยค่าเริ่มต้น crypto ทำให้มันช้า ดังนั้นฉันจึงต้องหลีกเลี่ยงสิ่งที่เข้ารหัสลับ

โซลูชันที่ 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 rexecแล้วใช้ rsh แทน ssh ซึ่งเกือบสองเท่าของประสิทธิภาพนั้นอยู่ที่44.6 MB / sซึ่งยังช้าอยู่ ความเร็วจะเด้งระหว่าง58 MB / sและ33 MB / sซึ่งบ่งชี้ว่าอาจมีปัญหาการควบคุมบัฟเฟอร์หรือความแออัด แต่นั่นอยู่นอกเหนือขอบเขตของคำถามนี้


2
เราใช้ rsync อย่างกว้างขวางที่นี่และมักจะได้รับความเร็วอินเทอร์เฟซเต็มรูปแบบเว้นแต่จะสำรวจไฟล์ 4K จำนวนหลายล้านไฟล์ ฉันไม่คิดว่าการเข้ารหัสลับเป็นปัญหาเว้นแต่ว่าคุณกำลังใช้ฮาร์ดแวร์ที่เสื่อมสภาพอย่างจริงจัง
Magellan

Intel Core2 Duo T8100 ใน ThinkPad R61 นับเป็นฮาร์ดแวร์ที่เสื่อมสภาพอย่างจริงจังหรือไม่? ถ้าไม่ทำไม rsync บน ssh ช้ากว่า rsync over rsh?
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 บนอินเทอร์เฟซแพ็คเก็ตที่ควรจะถูกกำหนดเส้นทาง GB การเชื่อมต่อโดยตรงของฉันระหว่างแล็ปท็อปสองเครื่องและเชื่อมต่อด้วย WiFi ไม่ได้ถูกใช้งาน หลังจากการตรวจสอบเป็นเพราะการใช้ 169.254 / 16 ซึ่ง Mac วางไว้บนอินเตอร์เฟสทั้งหมดและคอมพิวเตอร์ปลายทางที่ตอบกลับคำขอ ARP แม้ว่าคำขอจะมาในอินเทอร์เฟซอื่น


ตัวเลือกที่ถูกต้อง แต่ฉันพบว่า -x -T และ -o Compression = ไม่เพียง แต่มีผลเพียงเล็กน้อยต่อความเร็วในการถ่ายโอน
FMaz008

3
นอกจากนี้ยังมีมูลค่าการกล่าวขวัญว่า OpenSSH 6.7 ปิดการใช้งาน arcfour
bparker

ช่างเป็นเรื่องน่าเสียดาย @bparker! เรารู้ว่า ciphers ที่เหลืออยู่ใดที่เบาที่สุดใน CPU?
Law29
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.